GridView,为项目设置drawable

时间:2012-11-24 09:44:37

标签: android gridview

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

1 个答案:

答案 0 :(得分:0)

我把它放在GridAdapter.getView()这段代码中修复它:

if(selectedItems.contains(code))) {
    convertView.setBackgroundResource(R.drawable.selected);
} else {
    convertView.setBackgroundDrawable(null);
}