使用方法:继承ListActivity或者findViewById得到ListView,setAdapter加载列表数据项,adapter.notifyDataSetChanged()更新列表项数据,listView.setOnItemLongClickListener(l)设置长按监听器,listView.setOnItemClickListener(l)设置点击选择监听器, setOnItemSelectedListener(l)设置选中监听器;
更新:l.getItemAtPosition(position)得到该项数据,修改后,adapter.notifyDataSetChanged()更新列表项;
列表项从简单到复杂:
1. ArrayAdapter简单文字选项:setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[]{"item1", "item2"}));
每个列表项通过android.R.layout.simple_list_item_1指定只有一个文字控件TextView;
2. SimpleAdapter可定制layout的列表项:setListAdapter(new SimpleAdapter(this, List<Map<String, Object>> data, itemLayout, new String[] { "dataKey" }, new int[] { layout.controlKey }));
获取选中的列表的数据:(Map<String, Object>)l.getItemAtPosition(position);
每个列表项可以定制layout,复杂显示;
3. 继承ArrayAdapter:重写getView()、getItem(id)等方法;注意convertView的重用,类比ios中的view重用;
适用条件:数据为Array;
4. 继承BaseAdapter:实现了ListAdapter,通过Observer实现view对数据变化的响应,即notifyDataSetChanged;
适用范围:需要转化数据为Array、更新数据;适用于大部分要灵活定制item view的ListView;
5. 继承ListAdapter:ListView的最基本类型;
适用范围:数据设置后不再更改;