Android自學筆記-11-listview簡單例子

在開發的過程中,經常會用到列表,google已經為我們提供瞭列表的控件:listview。今天介紹的是最簡單的listview。

使用listview首先需要在佈局文件中添加一個listview控件,類似下面這樣:

    
    


然後就是在我們的Activity中獲取到該listview,並將數據關聯到這個listview,這裡簡單的介紹三種關聯的方式:

1 使用自定義的Adapter

首先我們需要自己編寫一個java類繼承BaseAdapter,並實現裡面的方法。然後我們調用listview的setAdapter方法,並創建一個我們自定義的Adapter的實例,作為參數傳入。

下面是自定義的Adapter類:

private class myAdapter extends BaseAdapter{

		@Override
		public int getCount() {
			//返回listview的item的總數
			return 50;
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return 0;
		}

		// 手工穿件listview的item
//		@Override
//		public View getView(int position, View convertView, ViewGroup parent) {
//			Log.i("mxy", "位置" + position);
//			TextView tv = new TextView(getApplicationContext());
//			tv.setText("位置" + position);
//			tv.setTextColor(Color.RED);
//			return tv;
//		}
		
		//通過佈局創建listview的item
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			Log.i("mxy", "位置" + position);
			
			View view = View.inflate(getApplicationContext(), R.layout.list_item, null);
			TextView mTextViewPosition = (TextView) view.findViewById(R.id.tv_position);
			TextView mTextViewName= (TextView) view.findViewById(R.id.tv_name);
			
			mTextViewPosition.setText("位置   " + position);
			mTextViewName.setText("姓名   " + position);
			return view;
		}
    	
    }

其中比較重要的是getView,這個方法返回的View就是我們在手機上顯示的listview裡面的item的View,上面的例子中寫瞭兩種創建item的方法都是可以的。

下面是listview的adapter的代碼:

 
        lv = (ListView) findViewById(R.id.lv);
        //自定義的Adapter
        lv.setAdapter(new myAdapter());

2 使用ArrayAdapter

代碼如下:

 	for(int i = 0 ; i < 50 ; i ++){
        	ary[i] = "功能" + i;
        }
        lv.setAdapter(new ArrayAdapter(this, R.layout.list_item, R.id.tv_position, ary));

這種方式適合比較簡單的listview,每行隻需要填一個數據,ArrayAdapter的參數分別是:Context、item的佈局文件、需要賦值的item中控件的id、數組。對於復雜一點的我們可以使用第3種方式。

3 使用SimpleAdapter

例子代碼如下:

	List<Map> data = new ArrayList<Map>();
        
        for(int i = 0 ; i < 50 ; i ++){
        	Map map = new HashMap();
        	map.put("position", "位置" + i);
        	map.put("name", "姓名 " + i);
        	data.add(map);
        }
        lv.setAdapter(new SimpleAdapter(this, data, R.layout.list_item, new String[]{"position","name"}, new int[]{R.id.tv_position,R.id.tv_name}));

這裡面的參數就比上面使用ArrayAdapter復雜多瞭,可以同時向佈局文件中得多個控件賦值。

對於listview我們在使用的過程中,並不會立即創建所有的item,隻有我們滑動到item在屏幕上顯示的時候才會顯示,這樣應該會加快運行的效率吧。

例子工程下載地址:https://download.csdn.net/detail/mengxiangyue/7036433

轉載請註明出處:https://blog.csdn.net/mengxiangyu

發佈留言