ListView的显示和缓存机制
总结来讲:
需要才显示,显示完就被回收到缓冲池中。
BaseAdapter
构造方法要传一个context,要不要传list?不一定?传了好像也没用
public MyAdapter(Context context) {
this.mInflater = LayoutInflater.from(context);
}
SimpleAdapter
new SimpleAdapter(context, data, resource, from, to);
//参数:上下文;
//data数据源:List<? extends Map<String ?>>,一个由map所组成的list集合.每一个map对应listview列表中的一行;每一个map中的键必须包含所有在from中指定的键
//resource:列表项布局文件对应的id,R.id.item
//from:map中的键名(自己取),new String[] { "image", "text" }
//to:绑定数据视图中的组件id,与from对应.new int[] { R.id.image,R.id.text }
// 加载SimpleAdapter数据源
private List<Map<String, Object>> getData() {
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("text", "java");
map.put("image", R.drawable.ic_launcher);
list.add(map);
ArrayAdapter
//参数:泛型;上下文;listview加载的每一个列表项对应的布局文件;数据源
new ArrayAdapter<T>(context, textViewResourceId, data);
监听器
1.onItemClickListener:监听单个条目的点击事件
//注意是item
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
listView.getItemAtPosition(position);//返回一个条目对象(object)//position从0开始
}
});`
2.onScrollListener:监听滚动变化,在滚动中加载数据
listView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { //手指按在屏幕上,正在滑动 case SCROLL_STATE_TOUCH_SCROLL: break; //手指离开屏幕前用力的滑动 case SCROLL_STATE_FLING: break; //停止滑动 case SCROLL_STATE_IDLE: break; default: break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //? } });