9-7Android学习(listView优化(1))

这是我第一次写博客,还是有一点紧张的,写的不好还望大家见谅。主要写这个的目的是总结一下,今天的学习成果。
9-7Android学习(listView优化(1))
首先总结一下listview的优化问题。优化的原因是如果数据太多的话显示的条目太多,就要创建很多的条目,这个显然是不合理的,所以就要考虑到复用的问题,还好Google提供了API方法
public View getView(final int position, View convertView, ViewGroup parent)
就是这里面的convertView,是之前划出屏幕的Item,存放在了缓存池,这里还有还有一个viewholder的概念,他的主要作用是寻找Item里面的控件避免了每次在调用getView的时候都去通过findViewById实例化数据,这些控件都放置在viewHolder里面,然后这个viewHolder又被convertView去存储,主要是根据设置的tag去存储
``
ViewHolder holder = null;
if(convertView == null){
convertView = View.inflate(getApplicationContext(), R.layout.listview_blacknumber_item, null);
//2,减少findViewById()次数
//复用viewHolder步骤三
holder = new ViewHolder();
//复用viewHolder步骤四
holder.tv_phone = (TextView) convertView.findViewById(R.id.tv_phone);
holder.tv_mode = (TextView)convertView.findViewById(R.id.tv_mode);
holder.iv_delete = (ImageView)convertView.findViewById(R.id.iv_delete);
//复用viewHolder步骤五
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
还有就是向listView添加数据或者删除数据,不止要往往数据库里面添加数据,同时还要向代码中的集合中添加数据,然后再刷新,在刷新的时候适配器,要进行容错处理
if(mAdapter!=null){刷新步骤}`