我目前在我的应用程序中使用cwac-merge并且遇到了问题。
所以我有这个包含不同部分的列表视图。添加到 MergeAdapter 的第一个或静态视图。它们是直接添加的,无需激活/停用它们。
然后我将其他适配器添加到我的MergeAdapter
并立即隐藏它们setActive()
。这些是异步填充的,但在之前添加listView.setAdapter(adapter)
。所以我对每个适配器都这样做:
- 将适配器添加到
MergeAdapter
withadapter.addAdapter(subAdapter)
- 隐藏它
adapter.setActive(subAdapter, false)
- 获取数据时,将检索到的项目添加到 subAdapter,
subAdapter.addItems(items)
然后显示适配器adapter.setActive(subAdapter, true)
一切都运行良好,我的观点看起来不错,除了一件事。我在顶部视图中有几个按钮MergeAdapter
。点击行为是错误的。有时点击事件只会在滚动后触发ListView
。我注意到只有在我使用该setActive()
功能时才会发生这种情况。如果我评论每个setActive()
电话,则无法重现该问题。如果我单击多次然后滚动,则会触发多次单击。
这是一些屏幕截图。静态视图是图像和带有 4 个按钮的视图。然后动态部分是之后的适配器(传记,最后播放和最佳曲目)
更新:我已经设法(在某种程度上)通过在激活它们之后调用 subAdapter.notifyDatasetChanged() 来修复它。它仍然很笨拙,并且并非每次都有效。
更新:我认为这应该由图书馆涵盖,因为:
但请注意,您可以修改底层适配器。因此,例如,如果您将 CursorAdapter 添加到 MergeAdapter,并且您 requery() Cursor,则更改应通过 MergeAdapter 反映到 MergeAdapter 连接到的任何 AdapterView。