android - ArrayAdapter - 获取列表项的给定资源 ID

标签 android listview resources

在扩展 ArrayAdapter 时,我可以选择一个以资源作为参数的构造函数:

ArrayAdapter(Context context, int resource, T[] objects) 

此资源可用作 ListView 项目的布局。但是我如何访问给定的资源呢?我找不到像 getResource 或 getItemLayoutResource 这样的方法。我现在所做的就是构造函数中的 this.resource = resources ,以便稍后使用它。但是,如果我可以将资源提供给 BaseAdapter,为什么我要这样做:

super(context, resource, objects);

为什么我需要这个:我想在 getView 上的 LayoutInflator 中使用它。 也许我对这个参数的理解是错误的。它在 super 上到底做了什么?

最佳答案

super 所做的事情与您所做的非常相似,并且 getView 的基本实现使用它。 如果您只使用 ArrayAdapter 而不扩展它,并为其提供像 simple_list_item_1 这样的资源,您将获得字符串的基本显示。

您可以在此处查看代码: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/widget/ArrayAdapter.java#ArrayAdapter.0mResource

public View getView(int position, View convertView, ViewGroup parent) {
    return createViewFromResource(position, convertView, parent, mResource);
}

其中 mResource 是从您在构造函数中提供的资源保存的。

不幸的是,它是一个没有 getter 的私有(private)成员

关于android - ArrayAdapter - 获取列表项的给定资源 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26379363/

相关文章:

java - Android - 如何将接口(interface)传递给AsyncTask

android - 如何在没有 STL 的情况下构建 Android NDK.so?

listview - Xamarin ListView 绑定(bind)到 ObservableCollection 随机更改

java - Fragment 中的 ListView 不显示任何内容

php - WordPress插件开发

javascript - 将多个对象传递给 angularjs $resource.save()

c++ - 访问位图资源失败,错误代码为 0x716

java - 从另一个类获取日志以将此文本设置为 TextView

android - 访问 EditText Android

java - 如何在 fragment 中使用 GetJsonFromUrlTask​​.java