android - Android 类 BaseAdapter 中方法 getItem 和 getItemId 的 Intent 是什么?

标签 android adapter

我很好奇这些方法的用途 getItemgetItemId在 Android SDK 的 Adapter 类中。

从描述来看,getItem 似乎应该返回底层数据。所以,如果我有一个名称数组 ["cat","dog","re​​d"] 并且我创建一个适配器 a 使用那,那么 a.getItem(1) 应该返回“dog”,对吗? a.getItemId(1) 应该返回什么?

如果你在实践中使用过这些方法,你能举个例子吗?

最佳答案

我认为这些方法是访问列表数据的一种更简洁的方法。而不是通过像 myListData.get(position) 这样的东西直接访问我的适配器对象,我可以简单地调用像 adapter.get(position) 这样的适配器。

getItemId 也是如此。通常,当我想根据列表中对象的唯一 ID 执行某些任务时,我会使用此方法。这在使用数据库时特别有用。返回的 id 可以是对数据库中对象的引用,然后我可以对它执行不同的操作(更新/删除/等)。

因此,您可以使用 adapter.getItemId(position),而不是像 myListData.get(position).getId() 这样从原始数据对象访问 ID。

我觉得需要使用这些方法的一个例子是在一个使用 SeparatedListViewAdapter 的项目中。 .此适配器可以包含多种不同类型的适配器,每个适配器代表不同类型的数据(通常)。在 SeparatedListViewAdapter 上调用 getItem(position) 时,返回的对象可能会有所不同,具体取决于您发送它的位置“部分”。

例如,如果您的列表中有 2 个部分(水果和糖果):如果您使用了 getItem(position) 并且 position 恰好位于在 fruit 部分,您将收到与请求 getItem(position)position 指向 中的项目不同的对象糖果部分。然后,您可能会在 getItemId(position) 中返回某种常量 ID 值,它表示 getItem(position) 正在返回的数据类型,或者使用 instanceof 来确定你有什么对象。

除了我提到的以外,我从来没有觉得我真的需要使用这些方法

关于android - Android 类 BaseAdapter 中方法 getItem 和 getItemId 的 Intent 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6711592/

相关文章:

android - 将谷歌地图添加到我的应用程序和标记

c++ - C++中的适配器设计模式和内存管理

android - 这两个上下文代码有什么不同?

c++ - 如何正确编写模板模板参数?

android - ContextThemeWrapper 无法在 AppCompatActivity 中进行强制转换

android - 如何在使用 Retrofit 2 进行单元测试期间创建一个 retrofit.Response 对象

java - 应用程序在加载 xml 布局文件的主线程中做太多工作

android - 微调器上的文本是白色背景上的白色

android - 根据设备是安卓平板电脑还是手机使用不同的主题

android - "snapping"horizo​​ntalscrollview 像主屏幕一样