【问题标题】:ArrayAdapter - Get given resource id for list itemsArrayAdapter - 获取列表项的给定资源 ID
【发布时间】:2014-10-15 17:53:56
【问题描述】:

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

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

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

super(context, resource, objects);

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

【问题讨论】:

  • 为什么要访问资源??为什么不使用自定义适配器?
  • ArrayAdapter 可以满足我的所有需求。
  • 你想用资源做什么??解释
  • 我想根据我的代码为我的 ListView 设置不同的布局。我将布局提供给构造函数,但我缺少访问它的方法。

标签: android listview resources


【解决方案1】:

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 的私有成员

【讨论】:

  • “很遗憾,它是一个没有 getter 的私有成员”。谢谢你。这是我想知道的。我认为会有一种方法可以访问它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多