如何更改ListView上仅选定项目的背景颜色

时间:2015-07-10 12:04:40

标签: android listview

我正在使用此代码

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parentView, View view, int position, long id) {

            selectid = position;

            for (int j = 0; j < parentView.getChildCount(); j++)
                parentView.getChildAt(j).setBackgroundResource(R.color.listitem_normal);

            // change the background color of the selected element
            view.setBackgroundResource(R.color.listitem_pressed);

        }
    });

但是如果很多项目,如果我选择一个项目并开始向下翻转,我会看到它被选中,其他项目大约每5个。如果所有项目都放在屏幕上(无需滚动),一切都OK。

你能解释一下如何解决它吗?我尝试了很多选择。

1 个答案:

答案 0 :(得分:7)

您可以跟踪当前所选元素的位置:

OnItemClickListener listViewOnItemClick = new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) {
            mSelectedItem = position;
            mAdapter.notifyDataSetChanged();
    }
};

并覆盖适配器的getView方法:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final View view = View.inflate(context, R.layout.item_list, null);

    if (position == mSelectedItem) {
        // set your color
    }

    return view;
}