是否有可能从MergeAdapter
中删除视图或适配器?我尝试扩展它并从pieces
中删除视图,但它是private
的。或者也许在这个适配器中显示/隐藏视图的另一种替代方案?我尝试将其layout_height
设置为零并将可见性设置为View.GONE
,但它仍然显示空列表项。提前致谢。
是否有可能从MergeAdapter
中删除视图或适配器?我尝试扩展它并从pieces
中删除视图,但它是private
的。或者也许在这个适配器中显示/隐藏视图的另一种替代方案?我尝试将其layout_height
设置为零并将可见性设置为View.GONE
,但它仍然显示空列表项。提前致谢。
要从MergeAdapter
中移除视图或适配器,请使用以下方法:
在您的MergeAdapter
实例上使用setActive()
。
例如:
要从MergeAdapter
(merAdapter)中移除一个TextView
(mytextView),请使用:
merAdapter.setActive(mytextViiew,false);
要重新启用它(使其可见),请使用以下代码:
merAdapter.setActive(mytextViiew,true);
MergeAdapter
文档以获取详细信息:
https://github.com/commonsguy/cwac-merge
有没有办法从MergeAdapter中删除视图或适配器?
目前还不行,抱歉。如果你想试一试,添加不应该太难(从集合中删除并调用notifyDataSetChanged()
更新AdapterView
)。欢迎贡献! :-)
在Mark Murphy的回答基础上,我认为这很简单,只需要将此方法添加到MergeAdapter中:
public void removeAdapter(ListAdapter la) {
pieces.remove(la);
}
remove()
接受一个对象,如果该对象包含在 pieces 列表中,则会执行所有必要的测试和删除操作。您可以为自己的目的返回一个布尔值或其他内容,但我没有这样的需求。
然后只需调用类似以下的内容:
int view_to_remove = *AN_INT*
adapter.removeAdapter(listAdapter.getAdapter(view_to_remove));
adapter.notifyDataSetChanged();
你的MergeAdapter应该有一个叫做getCount()
的方法.. 如果我理解正确的话,从那里返回零可能会解决你的问题..
getCount()
中返回零将隐藏所有视图,但我需要隐藏特定的一个。例如,我添加了2个视图,2个适配器,然后再次添加了2个视图,现在我想要移除/隐藏第二个视图。 - ernazmgetView()
内设置视图的可见性不会隐藏列表项,但我会尝试不覆盖此方法来附加视图,感谢这个提示。 - ernazmgetView()
中,最终返回了一个带有ListView.LayoutParams
和width
为0的新视图。如果MergeAdapter
的作者不回复,我会接受你的答案。再次感谢。 - ernazm
pieces
是私有访问权限,所以我需要修改它的源代码。我对GitHub和贡献不是很熟悉,所以最终采用了一些变通方法。但还是感谢您的建议。 - ernazm