现在的位置: 首页 > 综合 > 正文

ListView中CheckBox记住状态信息

2017年11月05日 ⁄ 综合 ⁄ 共 1098字 ⁄ 字号 评论关闭

由于ListView中用checkBox的话,然后你又用了ViewHolder的话,当你滑动翻页的,原先已经选中的checkBox的状态被清除了,我们可以用集合来保存相关的信息。

 

@Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            final ViewHolder viewHolder;
            if (convertView == null) {
                convertView = LayoutInflater.from(mContext).inflate(R.layout.activity_main_listitem, parent, false);
                viewHolder = new ViewHolder();
                viewHolder.textView = (TextView) convertView.findViewById(R.id.text);
                viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.check);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }


            viewHolder.textView.setText("CheckBox" + getItem(position));
            viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {


                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked)
                        checkMap.put(position, true);
                    else if (checkMap.indexOfKey(position) >= 0)
                        checkMap.delete(position);
                }
            });


            if (checkMap.indexOfKey(position) >= 0) {
                viewHolder.checkBox.setChecked(true);
            } else viewHolder.checkBox.setChecked(false);


            return convertView;
        }


        private class ViewHolder {
            public TextView textView;
            public CheckBox checkBox;
        }

抱歉!评论已关闭.