Android中实现全选与反选
来源:互联网 发布:米家软件下载 编辑:程序博客网 时间:2024/05/22 10:49
Adapter
看注释应该就可以看懂了
public class ChatPlayersAdapter extends BaseAdapter {//存放是否选中结果集private List<Boolean> itemChecked = new ArrayList<>();//存放选中的CheckBox文本private List<String> names = new ArrayList<>();/** * 获取选中的个数 * @return */public int getCheckedCount() { int result = 0; for (int i = 0; i < itemChecked.size(); i++) { if (itemChecked.get(i)) { result++; } } notifyDataSetChanged(); return result;}/** * 全选 按钮监听 */public void setAllChecked() { //只要集合中包含false,就将该索引的位置改为true if (itemChecked.contains(false)) { for (int i = 0; i < itemChecked.size(); i++) { itemChecked.set(i, true); } } else {//全部已经选中状态(true),就全设为false for (int i = 0; i < itemChecked.size(); i++) { itemChecked.set(i, false); } } notifyDataSetChanged();}//反选public void setInvert() { for (int i = 0; i < mDatas.size(); i++) { itemChecked.set(i, !itemChecked.get(i)); } notifyDataSetChanged();}/** * 构造器 */public ChatPlayersAdapter(Context context, List<ChatBean> datas) { super(context); mDatas = datas; //初始化:设置默认都是未选的 for (int i = 0; i < mDatas.size(); i++) { itemChecked.add(false); //初始化names集合,全部设为空字符串 names.add(i, ""); }}@Overridepublic View getView(final int i, View view, ViewGroup viewGroup) { final ViewHolder holder; if (view == null) { view = mInflater.inflate(R.layout.item_chat, viewGroup, false); holder = new ViewHolder(view); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } final ChatBean bean = (ChatBean) mDatas.get(i); holder.chat_item_cb.setText(bean.getName()); holder.chat_item_cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //每次点击CheckBox,就将集合中该索引位置设置为反值 itemChecked.set(i, !itemChecked.get(i)); //设置names集合中的值 setNames(itemChecked.get(i), i, bean); } }); holder.chat_item_cb.setChecked(itemChecked.get(i)); setNames(holder.chat_item_cb.isChecked(), i, bean); return view;}/** * 给names集合设置值,联系人名称 */public void setNames(boolean checked, int i, ChatBean bean) { if (checked) { names.set(i, bean.getName()); } else { names.set(i, ""); }}public static class ViewHolder { public View rootView; public CheckBox chat_item_cb; public ViewHolder(View rootView) { this.rootView = rootView; this.chat_item_cb = (CheckBox) rootView.findViewById(R.id.chat_item_cb); } }}
Activity/Fragment
初始化方法:initView()
chat_lv = (ListView) inflate.findViewById(R.id.chat_lv);datas = new ArrayList<>();//假数据for (int i = 0; i < 10; i++) { datas.add(new ChatBean(i + "张三"));}chatPlayersAdapter = new ChatPlayersAdapter(getActivity(), datas);chat_lv.setAdapter(chatPlayersAdapter);btn_all = (Button) inflate.findViewById(R.id.btn_all);btn_invert = (Button) inflate.findViewById(R.id.btn_invert);btn_all.setOnClickListener(this);btn_invert.setOnClickListener(this);
点击事件
@Overridepublic void onClick(View v) { switch (v.getId()) { case R.id.btn_all: chatPlayersAdapter.setAllChecked(); break; case R.id.btn_invert: chatPlayersAdapter.setInvert(); break; }}
阅读全文
0 0
- Android中实现全选与反选
- 实现全选与反选
- js实现全选与反选
- js实现全选与反选
- Js实现全选与反选功能
- js实现全选与反选
- javascript实现全选与反选
- js实现全选与反选
- js实现CkeckBox全选与反选
- CListCtr实现全选与反选
- 如何实现全选与反选
- Android Dialog实现全选反选
- Android GridView实现全选反选效果
- Form中实现Checkbox全选反选
- Android中的全选与反选
- JQuery中全选与反选的
- 全选与反选
- 全选与反选
- 升级openssh步骤(7.6p1)
- Mybatis Mapper LONGVARCHAR
- postman使用连接
- oracle的分析函数over(Partition by...) 及开窗函数
- Python中Gradient Boosting Machine(GBM)调参方法详解
- Android中实现全选与反选
- vagrant up 无响应解决
- Servlet编程
- qml学习笔记(五): 可视化元素BorderImage、AnimatedImage、AnimatedSprite、SpriteSequence
- Tensorflow 入门 1
- spring boot logback配置
- Python实现一些简单的算法(1)—寻找完全数
- go实现业务回滚(defer妙用之一)
- visual studio配置xclib第三方库