Android列表视图项目背景更改

前端之家收集整理的这篇文章主要介绍了Android列表视图项目背景更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 Android列表视图.我想在单击一个listview项目时更改listview项目背景.

然后,之前选择的项目必须返回默认背景.这意味着只需要选择一个项目.

我已经搜索了很长时间了.我可以使用onItemClick()更改所选项目的背景

但我不能改变以前选择的项目.例如,如果我选择第二个项目,它就会被更改.然后我选择第三项.哦,我的上帝!它也改变了!我能为此做些什么我怎么能得到以前的位置?

这是我的android代码.

private class ListViewItemClickListener implements
            AdapterView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent,View view,int position,long id) {

            TextView title = (TextView) view.findViewById(R.id.title);
            title.setBackgroundResource(R.drawable.list_shape);

        }
    }

解决方法

当我在一个类似的例子中有这个时,我有一个名为的全局字段:
selectedListItem;

这将在您的onitemClickListener中更新,之前的项目将使其背景返回到默认值.

所以要更新你的代码

private class ListViewItemClickListener implements
        AdapterView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent,long id) {
        //First update the prevIoUsly selected item if one has been set
        if(selectedListItem!=null){
            TextView prevIoUsTitle = (TextView) selectedListItem.findViewById(R.id.title);
            prevIoUsTitle.setBackgroundResource(R.drawable.list_default_background);
        }
        //Then update the new one
        TextView title = (TextView) view.findViewById(R.id.title);
        title.setBackgroundResource(R.drawable.list_shape);
        selectedListItem = view;

    }
}

因此,只需将selectedListItem作为适配器中的字段,将onClickListener作为内部类,并使用默认背景drawable而不是list_default_background.

或者,您可以跟踪位置编号而不是实际视图.

编辑:

要将此方法用于列表,您还必须跟踪特定列表项的ID或对象实例.在我自己的解决方案中,在我的ListAdapter的getView方法中,我确保只更新与正确项目的ID /实例匹配的列表项.使用您的代码时,您还会发现当您向下滚动视图时,此可见项列表中的相同位置也会更新.这是因为列表视图引用了项目集中的列表,其中每个集合对应于任何时候屏幕上可见的项目.

要更新单个特定项目,您更适合使用其他答案中提到的选择器背景或指示器.

HTH

猜你在找的Android相关文章