案例: 我有一个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}}。我的问题:
答案 0 :(得分:2)
您可以使用ListAdapter
和int getCount()
迭代Object getItem(int position)
,直到找到具有所需ID的对象,然后使用当前位置作为ListView.smoothScrollToPosition(int position)
的参数。< / p>
效率不高但应该有效果。