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