我在FrameLayout
项目中有一个RecyclerView
。我有一个按钮,用于执行上传/下载操作。在onBindViewHolder
中,我为FrameLayout
标记指定了唯一ID,在onViewRecycled()
中,我将FrameLayout
标记重新指定为null。因此,RecyclerView
中的每一行,帧布局标记都应包含唯一标记值。
当用户点击上传或下载按钮时,应执行相应的操作,操作完成后相应的按钮将消失。
因此,当操作完成后,我会使用findViewbyTag(pass the unique identifier)
找到视图,它工作正常,各个按钮(按钮位于FrameLayout
内。我正在更改FrameLayout
alpha以使其消失)。但它也消失了其他一些回收商的观点项目。
以下是我为FrameLayout
添加的代码。 SessionId
对每一行都是唯一的
holder.uploadDownloadContainer.tag = sessionId
onViewRecycled()
代码如下,
holder.uploadDownloadContainer.tag = null
下载完成后,
val containerView = view?.findViewWithTag(downloadData.sessionId) as? FrameLayout
containerView?.let {
onUiThread {
info("Fading away upload/download button")
containerView.animate().alpha(0f).setDuration(500).start()
}
}
有人可以指出这里出了什么问题,为什么其他行的上传/下载按钮(FrameLayout
)也在删除?
答案 0 :(得分:0)
尝试保留模型类项列表以存储项的详细信息。并在适配器的on bind视图中执行所需的视图更改。这将有助于正确维护国家。而不是相对于标签ID分配值。当您需要更新项状态时,请调用recycleler视图适配器notify方法,该方法将调用该项的on绑定。