我目前在我的应用中使用cwac-merge而我正面临一个问题。
所以我有不同部分的列表视图。添加到MergeAdapter的第一个或静态视图。它们是直接添加的,无需激活/停用它们。
然后我将其他适配器添加到MergeAdapter
并使用setActive()
将其隐藏起来。它们是异步填充的,但在listView.setAdapter(adapter)
之前添加。所以我为每个适配器做这个:
MergeAdapter
adapter.addAdapter(subAdapter)
adapter.setActive(subAdapter, false)
subAdapter.addItems(items)
,然后使用adapter.setActive(subAdapter, true)
一切都很完美,除了一件事,我的看法看起来很好。我在MergeAdapter
的顶视图中有几个按钮。点击行为是错误的。有时点击事件只会在滚动ListView
后触发。我注意到只有在我使用setActive()
功能时才会发生这种情况。如果我对每setActive()
次来电发表评论,则无法重现该问题。
如果我多次单击然后滚动,则会触发多次点击。
以下是一些截图。静态视图是图像和带有4个按钮的视图。然后动态部分是(传记,最后播放和最佳曲目)之后的适配器
更新: 我已经设法(通过在激活它们之后调用subAdapter.notifyDatasetChanged()来修复它。它仍然是hacky,每次都不起作用。
更新: 我认为这应该由图书馆涵盖:
但请注意,您可以修改基础适配器。因此对于 例如,如果您向MergeAdapter添加CursorAdapter,那么 requery()的Cursor,应该通过改变来反映 将MergeAdapter合并到MergeAdapter所连接的任何AdapterView。
答案 0 :(得分:0)
问题实际上与我的项目有关。当内容被提取和填充时,我正在显示一个屏幕,其中包含隐藏内容的ProgressBar。我显示内容的时刻和检索数据时的内容发生冲突。从技术上讲,屏幕视图上的setVisibility(VISIBLE)
使用mergeadapter.setActive()
命令在错误的时间发生。
无论如何,好时光!谢谢@CommonsWare