更改listview中第一个项目的背景颜色

时间:2013-11-11 16:15:42

标签: android listview android-listview

我有一个listview,当用户点击某个项目时会改变该项目的背景颜色,但是我还需要它做的是将视图中的第一个项目设置为具有背景颜色,这样它就是“默认”项目如果用户没有点击任何内容。

我对listview的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;
        }
    }

1 个答案:

答案 0 :(得分:2)

不要在onItemClick中手动更改行的背景,因为当该特定行被回收时,它将显示另一行的背景,该行未被选为您更改它的颜色。

而是为您的背景创建一个具有不同状态的选择器,并使用setItemChecked指示检查哪一行,如果背景应该是不同颜色,则列表视图将进行管理