0

ユーザーがアイテムをクリックするとそのアイテムの背景色が変わるリストビューがありますが、ビューの最初のアイテムに背景色を設定する必要があるため、ユーザーが何もクリックしません。

リストビューの onclick は次のようになります。

list1.setOnItemClickListener(new OnItemClickListener() {
                    View row = null;
                    @Override
                    public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                        imageURL = (String) (list1.getItemAtPosition(position));
                        if (row != null) {
                            row.setBackgroundResource(0);
                        }
                        row = v;
                        v.setBackgroundResource(R.color.selected);

                    }
                });

私の現在のリストアダプターは次のようになります。

class MyListAdapter extends ArrayAdapter<String> {

        private ArrayList<String> items;

        public MyListAdapter(Context context, int textViewResourceId,
                ArrayList<String> items) {
            super(context, textViewResourceId, items);
            this.items = items;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null) {
                LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.image_row_layout, null);
            }
            String o = items.get(position);
            if (o != null) {
                SmartImageView tt = (SmartImageView) v.findViewById(R.id.smallimage);
                if (tt != null) {
                    tt.setImageUrl(o);

                }
            }
            return v;
        }
    }
4

1 に答える 1

2

onItemClick で行の背景を手動で変更しないでください。その特定の行がリサイクルされると、変更した色として選択されていない別の行の背景も表示されるためです。

代わりに、背景にさまざまな状態のセレクターを作成し、setItemCheckedを使用してどの行がチェックされているかを示し、リストビューは背景を別の色にするかどうかを管理します

于 2013-11-11T16:29:59.287 に答える