如何在View Recycle RecylerView中删除FrameLayout标记

时间:2016-03-26 09:58:15

标签: android android-recyclerview

我在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)也在删除?

1 个答案:

答案 0 :(得分:0)

尝试保留模型类项列表以存储项的详细信息。并在适配器的on bind视图中执行所需的视图更改。这将有助于正确维护国家。而不是相对于标签ID分配值。当您需要更新项状态时,请调用recycleler视图适配器notify方法,该方法将调用该项的on绑定。