获取不可见ListItem的位置

时间:2011-09-15 11:52:32

标签: android android-listview

案例: 我有一个ListView,其中包含可变数量的ListItems(例如20)。首先,项目0-6可见。用户现在向下滚动列表并单击项目nr。 15.新活动开始,用户在某个时刻点击后退按钮。现在项目nr。 15可能处于同一位置,其位置已更改或已被删除(处理已删除的情况不是问题)。除了如何重新填充列表之外,其他两种情况将具有相同的行为(这也不是问题)。

我想做什么: 从项目nr返回ListView后。 15,我保存了项目的ID(使用setResult和onActivityResult),并使用项目重新填充ListView。 (有问题的项目,这里是第15号,在重新填充后将始终在列表中)

然后我想将列表向下滚动到项目nr的位置。 15,制作项目nr。 15 ListView中的第一个可见项目。

问题:

  • 使用方法getChildCount()getChildAt(index)不会 解决我的问题,因为所需的项目可能不在视野范围内(未显示) 在列表中,但在listadapter的数据库中)。
  • 使用方法getCount()而不是getChildCount()为我提供了列表中正确数量的项目 - 但是当我在for循环中运行项目时,我遇到{时出现NullPointerException {1}}。

我的问题:

  • 如何查看所有项目(列表中是否可见),当我找到符合我要求的项目时,滚动列表视图,使该项目成为第一个可见项目?

1 个答案:

答案 0 :(得分:2)

您可以使用ListAdapterint getCount()迭代Object getItem(int position),直到找到具有所需ID的对象,然后使用当前位置作为ListView.smoothScrollToPosition(int position)的参数。< / p>

效率不高但应该有效果。

相关问题