您的位置:首页 > 其它

ListView多条目与checkBox全选删除操作

2018-04-06 15:50 423 查看

1、多条目

效果图:



主要不一样的地方是在自定义的MyAdapter.java中。

private final int TYPE_1 = 0;
private final int TYPE_2 = 1;

//指定想要实现的布局类型
@Override
public int getItemViewType(int position) {
if(position % 2 == 0) {
return TYPE_2;
}
else {
return TYPE_1;
}
}

//指定要加载多少个条目类型
@Override
public int getViewTypeCount() {
return 2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
switch (type) {
case TYPE_1:
convertView = View.inflate(mContext, R.layout.layout_item1, null);
break;

case TYPE_2:
convertView = View.inflate(mContext, R.layout.layout_item2, null);
break;

default:
break;
}

return convertView;
}


2、checkBox全选删除操作

界面:



全选:



删除:





UI界面的设计代码就不写了。直接上添加的逻辑代码。

代码:

mAllSelected.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mAllSelected.getText().equals("全选")) {
mAllSelected.setText("取消");
for(int i = 0; i < itemList.size(); i++) {
itemList.get(i).setCheckBox(true);
}
myAdapter.notifyDataSetChanged();
}
else {
mAllSelected.setText("全选");
for(int i = 0; i < itemList.size(); i++) {
itemList.get(i).setCheckBox(false);
}
myAdapter.notifyDataSetChanged();
}
}
});


itemList为数据集。注意修改后数据,添加myAdapter.notifyDataSetChanged();语句。

MyAdapter.java:

//        myHandler.checkBox.setChecked(thing.getCheckBox());
//        myHandler.checkBox.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Item thing = mItemList.get(position);
//                if(myHandler.checkBox.isChecked()) {
//                    thing.setCheckBox(true);
//                }
//                else {
//                    thing.setCheckBox(false);
//                }
//            }
//        });

myHandler.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Item thing = mItemList.get(position);
if(myHandler.checkBox.isChecked()) {
thing.setCheckBox(true);
}
else {
thing.setCheckBox(false);
}
}
});

myHandler.checkBox.setChecked(thing.getCheckBox());


mItemList是MyAdapter中的数据集。

这里使用setOnClickListener()与setOnCheckedChangeListener()都可以完成单选item中checkBox状态改变的操作。但是setOnCheckedChangeListener()可以监听checkBox的所有变化,而setOnClickListener()只能监听点击事件,不能监听setCheckBox()方法等。

其次是,当使用setOnCheckedChangeListene()时, myHandler.checkBox.setChecked(thing.getCheckBox());语句必须在监听事件之后执行,而使用setOnClickListener()时,myHandler.checkBox.setChecked(thing.getCheckBox());语句位置可先可后。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Andoird ListView
相关文章推荐