Android:如何隐藏特定的ListView分隔符

17

我该如何隐藏或删除特定的Listview分隔符?当然,我可以隐藏所有的分隔线。

getListView().setDivider( null ); 
getListView().setDividerHeight(0); 

但是我需要在我的列表视图中隐藏一两个分隔符,例如通过位置。我正在使用自定义适配器来显示列表数据。 谢谢。

2个回答

16
您可以隐藏列表视图中禁用项目的水平分隔符(通常用作部分标题)。要做到这一点,请在areAllItemsEnabled BaseAdapter回调中返回false。再次强调,这仅适用于那些被禁用的视图(您在isEnabled回调中为此项返回false)。关于此回调的文档有点含糊:
指示此适配器中的所有项目是否都已启用。如果此方法返回的值随时间变化,则不能保证其将生效。如果为true,则表示所有项目都是可选择和可单击的(没有分隔符)。
请注意,它提到了分隔符。我不确定这是否是预期行为还是某种副作用。但它起作用。您可以在ApiDemos List demo 5(Separators)中看到这一点。参考资料

谢谢这个答案,救了我的一天。重写BaseAdapter的areAllItemsEnabled方法并返回false就解决了问题。 - Manju

7

您可以为每个ListItem创建自定义视图,从而可以打开或关闭分隔符,或者您可以创建一个分隔符视图,将其添加到正确的位置。


我有一个自定义的列表项布局。但是我不知道如何在每个项目上添加或删除分隔线。我认为分隔线对于所有列表视图都是常见的事情。 - Georgy Gobozov
只需在布局的顶部或底部添加一个分隔符视图,并将其设置为可见或不可见即可。 - slayton
Slayton,很抱歉我不明白你说的话。你说我可以在我的列表项中添加分隔符,但这个分隔符是什么?TextView、ImageView等吗?在listview属性中有divider属性-适用于所有列表。我如何为每个项设置此属性?也许你的意思是禁用我上面代码中提到的“本地”分隔符,然后在我的列表项视图中模拟分隔符作为附加视图?对吗? - Georgy Gobozov
@Georgy gobozov。“也许您的意思是禁用“本地”分隔符,如我上面的代码所述,并在我的列表项视图中模拟分隔符?对吗?” 是的。 - slayton
我从未想过这样一个简单的解决方案...(手动自定义分隔符)谢谢你替我考虑! - keybee
如何处理可点击的项目?如果分隔符是项目的一部分,那么在单击时选择的区域也将包含分隔符,看起来很丑。 - 4ybaka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接