我有RecyclerView
中所有项目的位置,我想编写一个代码,该代码以编程方式提供项目的背景颜色,只是根据提供给它的位置。到目前为止,我可以使用此recyclerView.smoothScrollToPosition(Integer.parseInt(value));.
滚动到该项目,但无法突出显示该项目或为该项目提供背景颜色。
答案 0 :(得分:0)
您有两个选择:
第一种方法是直截了当的。连同适配器知道突出显示位置的项目列表。更改后,您将使列表无效并在onBindViewHolder
中应用您的数据,包括可能的重点。
onBindViewHolder(...) {
// ...
if (positionIsHighlighted) view.setBackground(dis) else view.setBackground(dat)
}
另一种方法是使用ItemDecoration
做类似的事情。您在要突出显示的任何视图的顶部/下方绘制。这涉及自定义绘图和比第一种方法更多的知识。
好处是它可能更具可重用性,您可以在所选视图的边界之上或之外绘制。
答案 1 :(得分:0)
你可以在你的适配器中定义一个变量,如selectedItemPosition : Int = 0
,然后有一个像下面这样的setter:
fun setSelectedItem(position:Int){
if(position == this.selectedItemPosition) return
val oldPosition = this.selectedItemPosition
this.selectedItemPosition = position
if(oldPosition >=0 )
notifyItemChanged(oldPosition)
if(position >=0)
notifyItemChanged(position)
在您的查看器中,检查adapterPosition是否等于selectedItemPosition。这样,当您更改所选项目时,旧选定项目将被取消选中,新选项目将被选中。