[android]ListView+SimpleCursorAdapter+checkbox实现批量删除
2013-11-19 10:41:03       我来说两句         作者:RowandJJ
收藏    我要投稿
最近项目有个需求。 实现对笔记列表进行批量删除,功能本身实现比较容易。 网上也有很多demo参考。但是这个项目不太一样,因为使用的是SimpleCursorAdapter绑定ListView,网上大多数都是ArrayAdapter、SimpleAdapter、BaseAdapter的例子。故而这里有必要记录一下解决的办法。     先来看下别人怎么实现的: 实现批批量删除网上大致有以下几种方式: 1.ArrayAdapter+ListView+CheckBox:http://theopentutorials.com/tutorials/android/listview/android-multiple-selection-listview/ 2.BaseAdapter+ListView+CheckBox:http://schimpf.es/listview-with-checkboxes-inside/ 3.使用ViewBinder添加CheckBox:http://hi.baidu.com/xghhy/item/391caf9db4c36cdc1e427179   --------------------------------------------------------------------------- 解决方法: 1.继承SimpleCursorAdapter,重写getView方法 2.在自定义的适配器中添加一个集合,保存被选中的listView条目的id 3.对外提供一个获取被选中条目id集合的方法   ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 public class CheckBoxAdapter4TextNote extends SimpleCursorAdapter              private ArrayList selection = new ArrayList(); //记录被选中条目id          private int mCheckBoxId = 0 ; //listView条目的样式对应的xml资源文件名(必须包含checkbox)          private String mIdColumn; //数据库表的id名称          public CheckBoxAdapter4TextNote(Context context, int layout, Cursor c,                  String[] from, int [] to, int checkBoxId, String idColumn,                  int flags)                      super (context, layout, c, from, to, flags);              mCheckBoxId = checkBoxId;              mIdColumn = idColumn;                  @Override          public int getCount()                      return super .getCount();                  @Override          public Object getItem( int position)                      return super .getItem(position);                  @Override          public long getItemId( int position)                      return super .getItemId(position);                  @Override          public View getView( final int position, View convertView,                  ViewGroup parent)                      View view = super .getView(position, convertView, parent);              final CheckBox checkbox = (CheckBox) view.findViewById(mCheckBoxId);              checkbox.setOnClickListener( new OnClickListener()                              @Override                  public void onClick(View v)                                      Cursor cursor = getCursor();                      cursor.moveToPosition(position);                                             checkbox.setChecked(checkbox.isChecked());                      if (checkbox.isChecked()) //如果被选中则将id保存到集合中                                              selection.add(cursor.getInt(cursor.getColumnIndex(mIdColumn)));                                          else //否则移除                                              selection.remove( new Integer(cursor.getInt(cursor.getColumnIndex(mIdColumn))));                          Toast.makeText(context, "has removed " + cursor.getInt(cursor.getColumnIndex(mIdColumn)), 0 ).show();                                                  });                             return view;          /返回集合          public ArrayList getSelectedItems()                      return selection;             

 

  调用:   ?
1 2 3 4 5 List bn = XXX.getSelectedItems();    for ( int id : bn)       //TODO 执行删除操作    }

 

更多相关文章

  1. 完美解决 Failed to fetch URL https://dl-ssl.google.com/andro
  2. androidのSharedPreferences存储集合对象
  3. TextView颜色
  4. Android添加(创建)、删除及判断是否存在桌面快捷方式的方法
  5. Android仿京东App购物车 二级列表+全选反选+Ok封装+拦截器+结算+
  6. Android(安卓)Studio中如何新建assets文件夹
  7. android实现对导航Tab设置下划线选中效果
  8. Android笔记(五):Android中的Radio
  9. Android(安卓)studio 如何创建创建第三方库生成自己的jar(Module

随机推荐

  1. 用python完成1-100的加法
  2. python多线程文件传输范例(C/S)
  3. [Python]PDF合成小程序PDF合成小程序
  4. 关于python return 和 print 的区别
  5. python基础练习--列表问题
  6. python list range 字符串的截取 如 text
  7. 如何将两个列表中的数据写入csv中的列?
  8. Python list 交集,并集,差集
  9. Python 卡方检验、克雷姆值
  10. 运用Python语言编写获取Linux基本系统信