---恢复内容开始---

最近在在实现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的点击事件并且刷新界面的更多相关文章

  1. ListView中的Item不能点击的解决方法

    有时,为了实现某种功能,在Android程序中会考虑在ListView的每一个Item中添加一个Button(或ImageButton等). 但是,这样会出现一个问题: 当同时设置了Button的on ...

  2. ListView使用自定义适配器的情况下实现适配器的控件点击事件执行Activity界面中的方法

    如果ListView使用的是自定义的适配器,比如MyArrayAdapter extends ArrayAdapter<String> 那么,如何实现适配器中的点击事件执行activity ...

  3. Android处理ListView中的Item中的Button按钮不能点击的问题

    问题描述:ListView列表中的Button按钮按钮不能点击 解决办法:在ListView中的Item项的布局文件中加上:android:descendantFocusability="b ...

  4. ListView中的组件Button的OnClick事件触发时机

    Android开发时,ListView中的组件Button的OnClick事件必须在ListView之外的组件事件触发后才能触发? 此处ListView无OnItemClick事件,而且ListVie ...

  5. AndroidのListView之滑动列表项(点击事件和滑动事件共存)

    这里正好在项目有这么一个bt的需求,如下图ListView的item可以响应点击事件也可以响应item的左右滑动事件,两个事件可以相互独立互不影响. 听说iphone的list选项就有这样bt的功能, ...

  6. RecylerView为item添加点击事件

    RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件. 1 原理: 为Recy ...

  7. listView中adapter有不同的click事件的简单写法

    在android中,listview一般都是通过一个adapter来绑定数据,一般的item的点击事件都会指向同一个目标(intent),仅仅是所带的參数不同而已.但有的时候事与愿违,每一个item的 ...

  8. 为RecyclerView添加item的点击事件

    RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件,顺便复习一下观察者模式. ...

  9. ExpandableListView实现子Item的点击事件

    在继承的BaseExpandableListAdapter的ExpandableListView的Adapter中,重写以下方法 @Override public boolean isChildSel ...

随机推荐

  1. GMTED2010 高程数据下载

    http://topotools.cr.usgs.gov/GMTED_viewer/viewer.htm

  2. 如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true

    下面这篇文章是从StackOverflow来的.LZ面试的时候遇到了一道面试题:“如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true”,于是LZ做了下面的这样的程序: bool ...

  3. git ssh认证

    一般新手用git时,使用HTTPS都需要输入用户名和密码,这是一个很低效的开发过程.(虽然有时可以让开发人员减少push的次数).github提供了几种连接方式,其中以https:开头的代表https ...

  4. C++ Placement New

    先看一个题目: #include <stdio.h> #include <iostream> using namespace std; struct Base { int j; ...

  5. HTML之学习笔记(七)列表

    html的列表分为有序列表,无序列表和自定义列表 1.有序列表(order list) 代码演示 <ol type="a"> <li>第一项数据</l ...

  6. 尝试解决IIS问题一些方法

    尝试解决IIS问题一些方法 在控制面板中安装相关功能.添加相关角色 Win下注册IIS: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_re ...

  7. Java中使用Observer接口和Observable类实践Observer观察者模式

    在Java中通过Observable类和Observer接口实现了观察者模式.实现Observer接口的对象是观察者,继承Observable的对象是被观察者. 1. 实现观察者模式 实现观察者模式非 ...

  8. .Net Mvc4 Kendo Grid Demo

    看见人家项目中用到了Kendo Grid组件,感觉不错,于是就没有压制住自己内心的好奇心!嘿嘿,咱们开始吧,步骤很简单,理解起来也很容易. 首先我们创建一个空的ASP.NET MVC 4 Web 应用 ...

  9. Httpservlet cannot be resolved to a type

    这个问题与上个问题可以说是“错的类似”.解决方案:就是在Tomcat的lib目录下加入servlet-api.jar 即可.

  10. 多关键字排序(里面有关于操作符(<<运算符 和 >>运算符 )的重载)

    一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数:现 ...