下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
问题分析
//有多少个条目被显示,这个方法就会被调用多少次
@Override
public View getView(final int position,View convertView,ViewGroup parent) {
View view;
ViewHolder holder;
//1.减少内存中view对象创建的个数(优化listView,避免内存溢出)
if(convertView==null){
Log.i(TAG,"创建新的view对象:"+position);
//把一个布局文件转化成 view对象。
view = View.inflate(getApplicationContext(),R.layout.list_item_callsms,null);
//2.减少子孩子查询的次数 内存中对象的地址。
holder = new ViewHolder();
holder.tv_number = (TextView) view.findViewById(R.id.tv_black_number);
holder.tv_mode = (TextView) view.findViewById(R.id.tv_block_mode);
holder.iv_delete = (ImageView) view.findViewById(R.id.iv_delete);
//当孩子生出来的时候找到他们的引用,存放在记事本,放在父亲的口袋
view.setTag(holder);
}else{
Log.i(TAG,"厨房有历史的view对象,复用历史缓存的view对象:"+position);
view = convertView;
holder = (ViewHolder) view.getTag();
//通过封装成对象的方式性能优化5%,很小,这里不给出Holder类,不如内存地址复用效果显著
}
holder.tv_number.setText(infos.get(position).getNumber());
String mode = infos.get(position).getMode();
//删除事件响应,这里留着以后用
holder.iv_delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new Builder(CallSmsSafeActivity.this);
builder.setTitle("警告");
builder.setMessage("确定要删除这条记录么?");
//DialogInterface接口类方法
builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
//删除数据库的内容
dao.delete(infos.get(position).getNumber());
//更新界面。
infos.remove(position);
//通知listview数据适配器更新
adapter.notifyDataSetChanged();
}
});
builder.setNegativeButton("取消",null);
builder.show();
}
});
return view;
}
实现方法看代码分析。顺便提一下,代码中有删除操作代码,重点看在增加删除后数据如何更新到ListView中的,就是adapter.notifyDataSetChanged()方法。
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!