【发布时间】:2015-09-09 07:44:10
【问题描述】:
我在带有 CHOICE_MODE_MULTIPLE 的 ExpandableListView 中有一个 gridview,我试图在按下按钮时取消选择所有项目,但我这样做的方式只是取消选择最后一个项目,我怎样才能清除所有项目?
@Override
public int getCount() {
return child.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
holder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child_item, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.name);
convertView.setTag(holder);
final View finalConvertView = convertView;
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isChecked = child.get(position).isChecked();
if (!isChecked) {
child.get(position).setChecked(true);
} else {
child.get(position).setChecked(false);
}
ex.findViewById(R.id.notificar).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
//clear all selected items
for(int i = 0; i< getCount(); i++){
child.get(i).setChecked(false);
}
}
});
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(child.get(position).getNome());
return convertView;
}
}
}
static class ViewHolder {
TextView text;
}
【问题讨论】:
-
您从
adapter执行此操作,imo 更好的方法是从列表所在的activity/fragment执行此操作。我对 listView 也有类似的情况,而且效果很好。只需在项目的onClick的活动/片段中调用一个函数,然后在那里运行取消选择循环。 -
在我尽力帮助您的同时,请将您的
onClick处理函数的前 6 行更改为child.get(position).setChecked(!isChecked)吗?用这些台词很难专注于问题。
标签: java android gridview arraylist expandablelistview