![](/img/trans.png)
[英]android:- How to change the language of list items of recyclerview?
[英]Android change textview in recyclerview in all items without redrawing the entire list
我有一个带有项目列表的recyclerview,每个项目除其他外还有一个与用户保持一定距离的textview。 当用户身体四处走动时,我想更新项目的距离而不重绘列表。 例如,假设用户站在三角形的中间,点为item1,2,3:
item1 5英尺
item2 10英尺
item3 15英尺
现在,用户将2英尺移向了item1-因此更改为:
item1 3英尺
item2 12英尺
item3 17英尺
但我不想重画。 换句话说,如果列表中有5000个项目,并且用户向下滚动到项目3150,然后更改了他的位置,则我不想执行诸如notifydatasetchanged之类的操作,该操作将重绘整个列表并向用户显示位置0的所有内容我想改为动态地仅更改列表中每个项目的距离的文本,并且就用户而言,一切都相同,并且只有距离发生了变化。
最好的方法是什么?
首先,您不能避免列表重绘,这就是更新UI的方式,但是请放心,到处都有缓存来处理小的更改。
关于项目,如果您调用notifyDataSetChanged
,则RecyclerView将仅重新绑定可见视图。 因此,这就是您要支付的费用,适配器的实际大小(在示例中为5000)无关紧要。
如果您希望RecyclerView仅更新更改的视图,则必须调用notifyItemChanged(position)
。 在这种情况下,RecyclerView将仅在更改的项目可见的情况下重新绑定它们。
如果您具有稳定的ID,则即使您调用notifyDataSetChanged
,如果适配器具有稳定的ID,RecyclerView也会使用当前表示该项目的现有视图保持器来调用onBindViewHolder
。 在ViewHolder中保留对您的项目的引用。 调用onBind
,请检查是否相同,并且仅更新必要的部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.