android - 如何将 ArrayAdapter.getView() 中的 'position' 参数转换为基础数据的绝对索引?

标签 android listview android-listview

假设我们有一个可以一次显示 5 个项目的 ListView。我们有(例如)100 个项目要通过此 ListView 显示。当我们滚动浏览此列表时,ListView 调用 ArrayAdapter.getView(int position, ...) 以获取新 View 。

问题是参数“位置”永远不会超过“5”,因为我们示例中的 ListView 不能一次显示超过 5 个项目。但是当用户单击一个项目时,我到底应该如何知道这个选定项目代表 ArrayAdapter 中的哪个成员/索引/位置/...?

假设我们向下滚动查看以下内容:


项目 56

项目 57

项目 58

项目 59

项目 60

现在,当用户单击“项目 58”时,位置参数等于“2”,而我想获得“58”。同样,“项目 59”会将“位置”设置为“3”,而我想要“59”。我能做什么?

最佳答案

好吧,我创建了一个带有 ListView 的示例应用程序(基于 1.5 章中 http://www.vogella.com/articles/AndroidListView/article.html 的代码)并覆盖了适配器中的 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 个 View ): 0...9 第一个屏幕 然后是 10..19。

所以参数位置超出了 getView 中的 views_number_per_screen。 请参阅 Activity 示例代码:http://pastebin.com/tvKv8kBu

关于android - 如何将 ArrayAdapter.getView() 中的 'position' 参数转换为基础数据的绝对索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564441/

相关文章:

android - 将 google-play-services 库导入 Intellij IDEA 12(和 13)

android - 存储 Google map 数据以便在我的 Android 应用程序中离线使用

android - NPE 自定义 ListView 适配器

java - 我实现了一个自定义比较器来对 ArrayList 进行排序,但 listview 仍未排序

Android:像在 Twitter 应用程序中一样平滑地下拉 View

java - 空指针异常

c# - 如何将数据库表中的数据添加到 ListView C# Xamarin Android App

android - Wearable.NodeApi.getConnectedNodes 结果从未调用

android - 可以在 Android 中使用 GTK+ 吗?

android - notifyDataSetChanged()事件