我尝试使用以下代码在GridView中制作多选:
ArrayList<String> selectedItems=new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
...
GridAdapter gridAdapter = new GridAdapter(this, tmp);
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String code=((TextView)view.findViewById(R.id.code)).getText().toString();
int index=selectedItems.indexOf(code);
if(index==-1) {
view.setBackgroundResource(R.drawable.selected);
selectedItems.add(code);
} else {
view.setBackgroundDrawable(null);
selectedItems.remove(index);
}
}});
...
}
但这有一个问题。我单击其中一个项目,它将颜色更改为灰色,这没关系。然后我向下滚动我的GridView并看到另一个灰色的项目。但它没有检查实际情况,我从来没有点击它。为什么?如何解决?
答案 0 :(得分:0)
我把它放在GridAdapter.getView()这段代码中修复它:
if(selectedItems.contains(code))) {
convertView.setBackgroundResource(R.drawable.selected);
} else {
convertView.setBackgroundDrawable(null);
}