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

Mat*_*att 5 android listview

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

MH.*_*MH. 17

如果使用'header'表示使用其中一种addHeaderView(...)方法添加的实际标题,则只需使用即可检索添加的标题数getHeaderViewsCount().

或者,如果我没记错的话,如果它包含页眉和/或页脚,ListView则将其适配器包装在HeaderViewListAdapter其中.您可以使用它getHeadersCount()来检索与上面相同的数字.


编辑:如果要检查是否添加了特定标头,您应该能够查询该标头HeaderViewListAdapter.您需要某种标准来检查.

例如,如果在你的3头ListView,您可以通过前三个项目迭代(你也许可以抓住他们直接从HeaderListViewAdapter,或使用ListViewgetItemAtPosition(...)方法),并查看是否有标准相匹配.执行此"匹配"的最简单方法可能是使用addHeaderView(...)也采用Object参数的方法添加标头.您可以提供基本上可以区分多个标头的任何内容,显然只要数据对象不同.例如,你可以传入一个字符串.

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

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