在開發的過程中,經常會用到列表,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