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);
            }
        }});

...

}

しかし、これには問題があります。アイテムの 1 つをクリックすると、色がグレーに変わります。問題ありません。次に、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 に答える