如何在安卓Recycler View中展示最后一个选项的选择?

5
我已经在android中的导航抽屉中实现了recycler view,它正常工作,我能够通过点击recycler view的项来切换项目。但是我无法更改所选项的背景颜色,请建议我如何实现它。我到目前为止尝试过以下方法:
1. Background Selector in RecyclerView Item:尝试将recycler view设为可点击、可聚焦,但未成功。
2. http://innodroid.com/blog/post/tracking-selected-item-in-recyclerview:已实现,但不知道在哪里编写更改背景代码。
请帮助我解决问题。

也许这个可以帮到你:http://amolsawant88.blogspot.in/2015/08/easy-way-to-highlight-selected-rowitem.html - Amol Sawant
2个回答

3
你真正需要了解的是,RecyclerView并不是一个带有奇特适配器的Listview控件。它没有展示出许多ListView的功能,虽然将其与ListViewGridView(甚至是StaggeredGridView)进行比较是可以理解的,但不应将其与它们混淆。
使用RecyclerView时,“背景变化”选择器的处理职责依赖于RecyclerView所持有的基础控件。onClick和其他许多你在ListView中免费获得的优点也是一样的。
为什么使用RecyclerViewListView更好(或更差)是另一回事,我不会进一步讨论。为了解决你的问题,在你的ViewHolder中填充的布局中(即实际在RecyclerView内部使用的布局,类似于如果它是ListView中的“列表行项目”,则需要填充的布局),添加以下内容以设置背景选择器:
android:clickable="true"
android:background="?android:selectableItemBackground" 

这应该适当地设置背景。


我只是在建议,如果列表视图能够胜任您的工作,那么为什么要选择回收视图呢?因为难以实现该点击功能等。为了让用户在列表中显示少量项目,请使用列表视图,除非您需要自定义视图。@kha - TechChain
1
@TechGuy 好的,我以为有一个官方的建议关于这个问题。虽然我同意ListView更简单易用,但RecyclerView也有其优点(例如非常容易交换LayoutManager和一些性能优助),所以我个人尽可能地在任何地方使用它。这也可能是因为我花了无数个小时来研究它们的工作原理,所以我想从这些时间中得到一些回报,或者我只是一个受虐狂 :)。 - kha

-1

当你有非常大的项目并且想要拥有自定义UI时,建议使用Recycler View。如果你只想显示少量项目,则建议使用List View。


1
你有这方面的参考资料吗?我以前从未听过这个论点,也不太理解其背后的推理,所以我很乐意看一下自己的利益。 - kha
3
RecyclerView的整个意图就是要代替ListView - Eugene
因为这个回答根本没有试图解决问题,更不用说回答问题了,所以我要点踩。我也不同意所谓的建议,因为使用RecyclerView的一个明显优势是它可以防止懒惰开发人员实现ListView时犯同样的常见错误,但这并不是我点踩的原因。ListView和RecyclerView之间没有任何与“大项”或“自定义UI”有关的区别,因此基于这个推荐一个而不是另一个是没有任何意义的。 - Lorne Laliberte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接