ListView中响应item的点击事件并且刷新界面

时间:2022-09-02 13:08:12

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

最近在在实现listview功能中遇到了这个问题:

点击事件写在了adapter的item中,不知道如何在listview的点击事件中更新数据的显示:

总结:1.要使用notifyDataSetChanged();刷新界面需要满足setAdapter时传入的存储数据的对象是同一个,并且数据要发生改变;

(setAdapter时传入的List集合中存储bean对象,setadapter(this,List<Info> list),对bean对象的数据进行修改后,要进行更新界面需要list.clear(),list.addall(query());)


1.要实现的功能:点击垃圾桶,删除该item,具体布局如下图

ListView中响应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之滑动列表项&lpar;点击事件和滑动事件共存&rpar;

    这里正好在项目有这么一个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. WPF 自定义搜索框

      控件中的搜索图标下载地址:http://www.easyicon.net/1183666-Search_icon.html 搜索框设计过程比较简单: 1.先定义一个Rectangle作为背景 2. ...

  2. 【五】PHP数组操作函数

    1.输出数组的结构:bool print_r(数组); $arr=array('jack','mike','tom'); print_r($arr);//Array ( [0] => jack ...

  3. html&plus;css篇

    一,html语义话标签 http://www.html5jscss.com/html5-semantics-section.html

  4. Sequence&lpar;组合数学,集合不同元素的个数&rpar;

    Sequence [组合数学] 时间限制: 3 Sec  内存限制: 128 MB 提交: 138  解决: 52 [提交][状态][讨论版] 题目描述 在某个夜黑月高的晚上,!!!,原谅我编不下去了 ...

  5. 屏蔽掉返回键,menu键,Home键

    public class LockActivity extends Activity{ private static final int FLAG_HOMEKEY_DISPATCHED = 0x800 ...

  6. JS——基础知识(三)

    1.select (1)它的选择事件是onchange (2)他的选项索引可以通过value获取,比tab选项卡要方便一点. 2.数组常用方法 (1)添加元素 push():可以向一个数组末尾添加一个 ...

  7. Java高级特性--自定义一个StringBuilder的类

    案例讲解--自定义一个StringBuilder的类 一:案例设计介绍 自义一个M定yStringBuilder来实现StringBuilder的功能 二:案例设计 实现append()方法追加字符串 ...

  8. hadoop执行 报错

    Error: java.io.IOException: Initialization of all the collectors failed. Error in last collector was ...

  9. vue中使用echarts来绘制世界地图和中国地图

    第一步,下载echarts cnpm install echarts --save-dev 第二步,在main.js中全局引入 //引入echarts import echarts from 'ech ...

  10. QML获取随机颜色

    rect.color =);//random返回0~1的随机数