如何检查ListView是否包含指定的标题?

时间:2012-05-29 18:22:31

标签: android listview

我尝试使用ListView.indexOfChild(View视图)方法来检查ListView是否包含指定的标题视图,但有时当ListView实际包含指定的标题时它返回-1。有没有更好的方法来检查这个?

1 个答案:

答案 0 :(得分:17)

如果按“标题”表示使用addHeaderView(...)方法添加的实际标题,您只需使用getHeaderViewsCount()检索添加标题的数量。

或者,如果我没记错的话,ListView如果它包含页眉和/或页脚,它会将其适配器包装在HeaderViewListAdapter内。您可以使用其getHeadersCount()检索与上述相同的号码。


修改:如果要检查是否添加了特定标头,您应该可以查询HeaderViewListAdapter。您需要某种标准来检查。

例如,如果ListView中有3个标题,您可以迭代前三个项目(您可以直接从HeaderListViewAdapter抓取它们,或使用ListView } getItemAtPosition(...)方法)并查看是否符合条件。执行此“匹配”的最简单方法可能是使用addHeaderView(...)方法添加标头,该方法也采用Object参数。您可以提供基本上可以区分多个标头的任何内容,显然只要数据对象不同。例如。你可以传入一个字符串。

有了这些数据,您可以为前3个位置调用getItem(...) / getItemAtPosition(...)并检查返回的内容。对数据使用String的好处是每个Java对象都实现了一个toString()方法,然后您可以利用该方法进行简单的.equals(..)比较。

或者,您可以使用反射来获取实际的mHeaderViewInfos成员变量(只是ArrayList<ListView.FixedViewInfo>),并将其用于条件逻辑。