假设我们有一个ListView,一次可以显示5个项目。我们有(例如)此ListView显示的100个项目。当我们滚动浏览此列表时,ListView调用ArrayAdapter.getView(int position,...)以获取新视图。
问题是参数'position'永远不会超过'5',因为我们示例中的ListView一次不能显示超过5个项目。但是,当用户点击某个项目时,我应该知道这个选定项目代表的ArrayAdapter中的哪个成员/索引/位置/ ...
假设我们向下滚动以查看以下内容:
现在,当用户点击“第58项”时,位置参数等于'2',而我想获得'58'。同样,“项目59”将“位置”设置为“3”,而我想要“59”。我该怎么办?
答案 0 :(得分:1)
您可以使用ArrayAdapter.getItem()获取与点击的视图相关联的项目。在你的情况下,它将返回第58个项目,该项目在第2位是当前的。
答案 1 :(得分:1)
好吧,我创建了一个带有listview的示例应用程序(基于1.5 {1}}中的代码)并在适配器中覆盖了getView方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
System.out.println("getView " + String.valueOf(position));
return super.getView(position, convertView, parent);
}
然后我在滚动后运行应用程序和输出(每个屏幕10个视图): 第一个屏幕为0 ... 9 然后10..19。
因此参数位置超出了getView中的views_number_per_screen。 请参阅活动的示例代码:http://www.vogella.com/articles/AndroidListView/article.html
答案 2 :(得分:0)
创建自定义适配器并覆盖getView方法并在视图的标记中设置实际位置。 这样,如果使用view.getTag(),您将获得元素的实际位置。