0

我尝试使用以下代码在我的 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 并看到另一个灰色项目。但它并没有检查实际情况,我从不点击它。为什么?如何解决?

4

1 回答 1

0

我在将 GridAdapter.getView() 放入此代码时对其进行了修复:

if(selectedItems.contains(code))) {
    convertView.setBackgroundResource(R.drawable.selected);
} else {
    convertView.setBackgroundDrawable(null);
}
于 2012-11-24T14:48:58.000 回答