如何记录ListView滚动后CheckBox保持选中状态以及当全选后让滚动出来的item也被选中
来源:互联网 发布:中国网络审查 编辑:程序博客网 时间:2024/05/16 14:49
1. 定义成员变量用于记录ListView所有item的选中状态:
private Map<Integer, Boolean> checkStatusMap = new HashMap<Integer, Boolean>();2. 在adapter初始化时候向checkStatusMap中put listView数据个数的false(false意味着一开始都是未选中):
private class CallLogListAdapter extends BaseAdapter { private Context context; private ViewItemHolder holder; private LayoutInflater inflater; public CallLogListAdapter(Context c) { this.context = c; this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); int position = 0; for(int i = 0; i < recordList.size(); i++){ checkStatusMap.put(position++, false); } }
3. 在listView的onItemClick()方法或者checkbox的onClick()方法方法中记录checkbox选中状态:
@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {ViewItemHolder holder = (ViewItemHolder) view.getTag();holder.contactIsDelCheckBox.toggle();boolean isChecked = holder.contactIsDelCheckBox.isChecked();// save CheckBox statuscheckStatusMap.put(position - 1, isChecked); //...}4. 在adapter的getView()方法中从checkStatusMap中获取选中
@Overridepublic View getView(final int position, View convertView, ViewGroup parent) { if (convertView != null) {holder = (ViewItemHolder) convertView.getTag(); } else {convertView = inflater.inflate(R.layout.call_log_delete_preview_item, null);holder = new ViewItemHolder();holder.contactTimeTextView= (TextView) convertView.findViewById(R.id.contact_time);holder.contactTypeImageView = (ImageView) convertView.findViewById(R.id.contact_type);holder.contactNumberTextView = (TextView) convertView.findViewById(R.id.contact_number);holder.contactByImageView = (ImageView) convertView.findViewById(R.id.contact_by);holder.contactDurationTextView = (TextView) convertView.findViewById(R.id.contact_duration);holder.contactIsDelCheckBox = (CheckBox) convertView.findViewById(R.id.contact_is_delete);convertView.setTag(holder); } // init holder // ...... // get checkbox check status holder.contactIsDelCheckBox.setChecked(checkStatusMap.get(position)); return convertView;}5. 如果点击了全选CheckBox,则往checkStatusMap中遍历put进入全部true 否则put进入全部false:
private void checkAllRecord(boolean isChecked){int size = recordListView.getChildCount();if(isChecked){for(int i = 1; i < size; i++){RelativeLayout layout = (RelativeLayout) recordListView.getChildAt(i);CheckBox isDel = (CheckBox) layout.findViewById(R.id.contact_is_delete);isDel.setChecked(true);}mRecordDelButton.setEnabled(true);// set all checkbox check status to be checkedfor(int i = 0; i < checkStatusMap.size(); i++){checkStatusMap.put(i, true);}}else{for(int i = 1; i < size; i++){RelativeLayout layout = (RelativeLayout) recordListView.getChildAt(i);CheckBox isDel = (CheckBox) layout.findViewById(R.id.contact_is_delete);isDel.setChecked(false);}mRecordDelButton.setEnabled(false);// set all checkbox check status to be uncheckedfor(int i = 0; i < checkStatusMap.size(); i++){checkStatusMap.put(i, false);}}}
- 如何记录ListView滚动后CheckBox保持选中状态以及当全选后让滚动出来的item也被选中
- listview gridview item被选中后状态的保存
- GridView 翻页后保持checkbox选中状态
- checkbox全选 全不选 所有的子项选中或者不全选中后,全选按钮也选中或者不选中
- checkbox全选 全不选 所有的子项选中或者不全选中后,全选按钮也选中或者不选中
- Android Tips:CursorAdapter 绑定 ListView后,List滚动CheckBox选中消失的问题
- android ListView 中CheckBox选中后,状态混乱的解决方案
- ListView的item选中后保持选中时的高亮颜色。
- js实现翻页后保持checkbox选中状态
- listview里面checkbox选中状态乱蹦+滚动listview的时候自动调用 onCheckedChanged 导致CheckBox 状态不停变化
- Gridview选中Checkbox后删除选中记录
- Android ListView控件选中item项,并保持选中状态
- ListView Item选中松开后item背景色持续为选中状态
- 点击CListCtrl空白后,原来选中的ITEM仍处于被选中状态
- ListView中item点击事件、item保持选中状态以及其他细节
- android 选中一个Activity的ListView的item后如何传值到另一个Activity的ListView
- ztree刷新后依然保持之前的选中节点状态
- listView选中后item背景改变
- PowerDesigner 连接oracle直接生成数据库中的表
- 根据类名字符串实例化类,并调用类的方法或函数
- RHEL5.7下iptabels防火墙配置(下)
- oracle table()函数应用;
- code::blocks 使用Pthread库
- 如何记录ListView滚动后CheckBox保持选中状态以及当全选后让滚动出来的item也被选中
- 什么是套打 水晶报表套打
- php数组array_combine()函数和array_count_values()函数
- switch
- Hungarian
- SQL Server2008数据库附加时5123错误解决方案
- thread sleep 函数的用法
- Android源码开发环境搭建
- iptables防火墙的基本应用