【问题标题】:android how to set arrayAdapter layout that prepared programmaticallyandroid如何设置以编程方式准备的arrayAdapter布局
【发布时间】:2013-03-20 17:10:51
【问题描述】:

我正在尝试将自定义列表视图与 arrayadapter 一起使用。我有这个适配器的布局。但我想以编程方式创建这个适配器的布局。Arrayadapter 将此布局的 id 传递给它的超级。它不接受布局。如何传递布局对象而不是 resourceId?

super(context, LayoutResourceId, ArrayList);

【问题讨论】:

  • LayoutResourceId 和 ArrayList 定义在哪里?
  • 使用 BaseAdapter 代替,您不需要将任何 id 传递给超类
  • 通常它从 R.java 中获取 LayoutResourceId,它是布局的 id,而 Arraylist 是 myObject 的列表。但现在它不在 R.java 中,它以编程方式准备
  • @Atrix1987 on baseAdapter in getView 我使用了一个充气器,它的充气方法再次使用 id 它不接受布局。
  • @nrllh 充气器需要布局的 ID 才能充气...就像 ArrayAdapter 的构造函数一样。

标签: android android-layout android-arrayadapter


【解决方案1】:

对于 ArrayAdapter,您可能不需要扩展它,只需实例化它并使用它...使用此构造函数:http://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter(android.content.Context, int, int)

new ArrayAdapter(context, layoutResourceId,arrayList);

【讨论】:

  • 我想传递布局对象而不是 layoutResourceId。在 setContentview() 方法上,它采用 id 或视图或视图和布局。但是arraydapter绝对需要layoutResourceId
  • 你不能那样做,布局对象是由适配器按需实例化(膨胀)的,这就是我们使用适配器的原因。它不仅会在内部创建一个视图对象(布局对象),而且会在构建 UI 时创建尽可能多的视图对象……而且它是按需创建的。你为什么不想通过身份证?
  • 我正在做一个 sdk 项目。它基于项目而不是 android 项目的 java。我有一个活动类,我必须以编程方式创建布局
  • hummm...那么你也许可以从你的 Sdk 项目中继承这个基类,在实际的 Android 项目中,子类将提供如下方法的实现:protected int getLayoutResId();
【解决方案2】:

不,这是不可能的。因为 ArrayAdapter 没有默认构造函数。您还需要指定视图的结构,以及它应该在其上绘制视图的原因,这就是 arrayadapter 将布局 ID 和上下文作为其参数之一的原因

       ArrayAdapter(Context context, int textViewResourceId) is the constructor of ArrayAdapter with least parameter.

【讨论】:

    猜你喜欢
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多