然后,之前选择的项目必须返回默认背景.这意味着只需要选择一个项目.
我已经搜索了很长时间了.我可以使用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列表视图项目背景更改全部内容,希望文章能够帮你解决Android列表视图项目背景更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)