什么是ListView:
ListView就是一个能数据集合以动态滚动的方式显示在用户界面上的View。
ListView适配器模式:
有了Adapter可以将数据源与view进行分离~
ListView的recycleBin机制:
对于列表可能会有成千上万条数据,那ListView是如何可以做到不oom呢?这就需要了解它的recycleBin机制了,下面从源码来分析一下:
recycleBin存在于它的父类中,如下:
其中它里面有三个重要的成员变量,如下:
接下来看一下比较重要的方法:
下面用图来表述一下:
ListView的优化:
- convertview重用 / viewHolder
class MyAdapter extends BaseAdapter { private Context context; public MyAdapter(Context context) { this.context = context; } @Override public int getCount() { return 0; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } class ViewHolder { public ImageView img; public TextView title; public TextView info; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item, null); holder.img = (ImageView) convertView.findViewById(R.id.img); holder.title = (TextView) convertView.findViewById(R.id.title); holder.info = (TextView) convertView.findViewById(R.id.info); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.title.setText("Hello"); holder.info.setText("World"); return convertView; } }
- 三级缓存 / 滑动监听