我尝试使用 ListView.indexOfChild(View view) 方法来检查 ListView 是否包含指定的标题视图,但有时当 ListView 确实包含指定的标题时它会返回 -1。有没有更好的方法来检查这个?
1 回答
如果“标头”是指使用任何一种addHeaderView(...)
方法添加的实际标头,则可以使用简单地检索添加的标头数量getHeaderViewsCount()
。
或者,如果我没记错的话,如果它包含页眉和/或页脚,ListView
则将其适配器包装在 a中。HeaderViewListAdapter
您可以使用它getHeadersCount()
来检索与上述相同的数字。
编辑:如果您想检查是否添加了特定标题,您应该能够查询该标题HeaderViewListAdapter
。您将需要某种标准来检查。
例如,如果您的 中有 3 个标题ListView
,您可以遍历前三个项目(您可以直接从 中获取它们HeaderListViewAdapter
,或者使用ListView
'getItemAtPosition(...)
方法)并查看是否符合条件。进行这种“匹配”的最简单方法可能是使用addHeaderView(...)
也采用Object
参数的方法添加标题。您基本上可以提供任何东西来区分多个标题,显然前提是数据对象不同。例如,您可以只传入一个字符串。
有了这些数据,您可以为前 3 个职位调用getItem(...)
/getItemAtPosition(...)
并检查返回的内容。将字符串用于数据的好处是每个 Java 对象都实现了一个toString()
方法,然后您可以利用该方法进行直接.equals(..)
比较。
或者,您可以使用反射来获取实际的mHeaderViewInfos
成员变量(只是一个ArrayList<ListView.FixedViewInfo>
)并将其用于条件逻辑。