如果项目已在屏幕上显示了设定的时间,则需要更新recyclerview中的项目

时间:2018-10-08 17:59:34

标签: android android-recyclerview kotlin

使用Kotlin,我有一个带有显示Arraylist的适配器的recyclerview。我需要做的是设置一个Object.viewed属性,如果它在屏幕上已经显示2秒钟了。这意味着,如果您可以快速滚动浏览列表,则什么都不会发生,但是如果您停下来并一头阅读它,那么我需要将其设为已查看状态,这样我就可以增加一个可见计数器。

感谢任何帮助或指示。

3 个答案:

答案 0 :(得分:1)

您可以延迟2秒使用处理程序,并在其中进行查看的逻辑。因此,2秒后处理程序将执行如下代码:

//Code inside bindViewHolder() method :
handler = new Handler(); // make it globally
handler.postDelayed(runnable, 2000); // make a runnable with your logic code of viewed.

现在重写一个名为onViewDetachedFromWindow(VH holder)的方法,并在此处删除句柄回调。因此,如果您的视图在2000秒之前脱离,则将不会执行代码。

答案 1 :(得分:1)

Jeel Vankhede approach可以工作,但对我来说有点沉重。我建议创建一个地图ids to currentTime,在onViewAttachedToWindow内和onViewDetachedFromWindow内添加元素,检查是否经过了2秒。 (不要忘记从onViewDetachedFromWindow内部的地图中删除ID)

答案 2 :(得分:0)

尝试在OnResume函数中使用countdowntimer。

Object:Countdowntimer(2000,1000)........