ListView中响应item的点击事件并且刷新界面
---恢复内容开始---
最近在在实现listview功能中遇到了这个问题:
点击事件写在了adapter的item中,不知道如何在listview的点击事件中更新数据的显示:
总结:1.要使用notifyDataSetChanged();刷新界面需要满足setAdapter时传入的存储数据的对象是同一个,并且数据要发生改变;
(setAdapter时传入的List集合中存储bean对象,setadapter(this,List<Info> list),对bean对象的数据进行修改后,要进行更新界面需要list.clear(),list.addall(query());)
1.要实现的功能:点击垃圾桶,删除该item,具体布局如下图

2.avtivity将数据封装成bean对象存在list集合infos中,传送给adaper
//从数据库中查询所有数据,dao是数据库操作对象
BlackContactsDao dao = new BlackContactsDao(this);
List<BlackContactsInfo> infos = dao.queryALL();
//将返回的数据添加到list集合中,传送给adapter显示
mdapter = new BlackContactsItemAdapter(this,infos);
blackcontactsLvList.setAdapter(mdapter);
3.adaper收到数据后进行显public class BlackContactsItemAdapter extends BaseAdapter {
List<BlackContactsInfo> infos;
Context context;
String type;
//有参构造,传进infos数据,跟context
public BlackContactsItemAdapter(Context context, List<BlackContactsInfo> infos) {
this.infos = infos;
this.context =context;
} @Override
public int getCount() {
return infos.size();
} @Override
public Object getItem(int position) {
return null;
} @Override
public long getItemId(int position) {
return 0;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null) {
convertView = View.inflate(context, R.layout.item_blackcontacts_list, null);
holder = new ViewHolder();
//找控件
holder.ivdele = (ImageView) convertView.findViewById(R.id.blackcontacts_iv_dele);
holder.tvPhone = (TextView) convertView.findViewById(R.id.item_blackcontacts_phone);
holder.tvType = (TextView) convertView.findViewById(R.id.item_blackcontacts_type);
//给converview打上标签
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
final BlackContactsInfo info ;
info = infos.get(position);
switch (info.type){
case 0:
type = "电话";
break;
case 1:
type = "短信";
break;
case 2:
type = "电话+短信";
break;
}
holder.tvPhone.setText(info.phone);
holder.tvType.setText(type);
//给item中的垃圾桶设置点击事件
holder.ivdele.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//当垃圾桶被点击了,就根据被点击的item的号码,从数据库中删除
BlackContactsDao dao = new BlackContactsDao(context);
dao.delete(info.phone);
//以下下为核心代码,更新ui
infos.remove(info);
notifyDataSetChanged();
}
});
return convertView;
}
class ViewHolder{
ImageView ivdele;
TextView tvPhone,tvType;
}
}
4.核心代码:
//在对数据库进行删除该数据后,也要对传给listview的数据(list集合进行更新数据),infos集合要移除点击的对象
infos.remove(info);
//再调用notifyDataSetChanged();才可以真正实现数据更新。
notifyDataSetChanged();
---恢复内容结束---
ListView中响应item的点击事件并且刷新界面的更多相关文章
- ListView中的Item不能点击的解决方法
有时,为了实现某种功能,在Android程序中会考虑在ListView的每一个Item中添加一个Button(或ImageButton等). 但是,这样会出现一个问题: 当同时设置了Button的on ...
- ListView使用自定义适配器的情况下实现适配器的控件点击事件执行Activity界面中的方法
如果ListView使用的是自定义的适配器,比如MyArrayAdapter extends ArrayAdapter<String> 那么,如何实现适配器中的点击事件执行activity ...
- Android处理ListView中的Item中的Button按钮不能点击的问题
问题描述:ListView列表中的Button按钮按钮不能点击 解决办法:在ListView中的Item项的布局文件中加上:android:descendantFocusability="b ...
- ListView中的组件Button的OnClick事件触发时机
Android开发时,ListView中的组件Button的OnClick事件必须在ListView之外的组件事件触发后才能触发? 此处ListView无OnItemClick事件,而且ListVie ...
- AndroidのListView之滑动列表项(点击事件和滑动事件共存)
这里正好在项目有这么一个bt的需求,如下图ListView的item可以响应点击事件也可以响应item的左右滑动事件,两个事件可以相互独立互不影响. 听说iphone的list选项就有这样bt的功能, ...
- RecylerView为item添加点击事件
RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件. 1 原理: 为Recy ...
- listView中adapter有不同的click事件的简单写法
在android中,listview一般都是通过一个adapter来绑定数据,一般的item的点击事件都会指向同一个目标(intent),仅仅是所带的參数不同而已.但有的时候事与愿违,每一个item的 ...
- 为RecyclerView添加item的点击事件
RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件,顺便复习一下观察者模式. ...
- ExpandableListView实现子Item的点击事件
在继承的BaseExpandableListAdapter的ExpandableListView的Adapter中,重写以下方法 @Override public boolean isChildSel ...
随机推荐
- lint使用简介
LINT工具是一种软件质量保证工具,许多国外的大型专业软件公司,如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查,他们要求软件工程师在使用LINT时要打 ...
- Delphi在StatusBar上绘制ProgressBar
首先,在TForm的私有域,也就是private下设置两个变量ProgressBar.ProgressBarRect,其中ProgressBar为 TProgressBar类型,ProgressBar ...
- COCOS2d-x简易安装步骤
准备工作:1. 下载 cocos2d-x 下载地址:http://cdn.cocos2d-x.org/cocos2d-x-2.2.zip2. 下载 python 2.7.3 下载地址:h ...
- kvm中运行kvm
如何在 KVM 虚拟机上运行 KVM 上次讨论了如何在 VMware ESXi 虚拟机上运行 KVM 问题,前不久有读者想 “在 kvm 上面创建个虚拟机安装 rackspace 的 openstac ...
- paip.c++ qt 项目工程互相引用的方法
paip.c++ qt 项目工程互相引用的方法 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/ ...
- How to Type(dp)
How to Type Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- struts漏洞修补过程之S2-016
Struts漏洞修补过程之S2-016.邪恶的Struts再次现身,这一次是远程执行漏洞.官方建议立即升级到2.3.15.1.真希望这是最后一次漏洞修补.下面是升级步骤. 1.升级到struts2.3 ...
- 自己定义View常处理的回调函数
onFinishInflate() 当View中全部的子控件均被映射成xml后触发 onMeasure(int, int) 确定全部子元素的大小 onLayout(boolean, int, int, ...
- Selector、shape详解,注意这两种图像资源都以XML方式存放在drawable不带分辨率的文件夹中
Selector.shape详解(一) Selector的结构描述: <?xml version="1.0" encoding="utf-8"?> ...
- [置顶] ios App 中嵌入应用商店
昨晚同事拿了一个app 发现其app 内部页面打开了appstore 并没有唤起手机自带的appstore, 刚开始以为是用webview 加载的 ,可是自己些了一个demo 发现并不是那样一回事 用 ...