【问题标题】:How to set a theme to a Listview populated with setListAdapter如何将主题设置为使用 setListAdapter 填充的 Listview
【发布时间】:2011-09-11 18:04:45
【问题描述】:

我有一个简单地以这种方式填充的列表视图:

setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_multiple_choice, aux))

'aux' 是 static String[] aux = null;,通过 Web 服务填充。

我制作了一个主题并使用静态列表视图元素进行了测试,文件 lista.xml -> 你可以看到它here(如果你看底部你会看到我放了“列表项 1,列表项 2”,所以我需要动态地填充这些值...)

我的问题是,如何将主题应用到我的列表适配器?

我相信我是从:

setListAdapter(新的 ArrayAdapter(这个, R.layout.lista, aux))

但是我有两个问题。

(1) 我不知道如何使用 XML 并从 java (setlistadapter) 填充 (2) 我相信我会失去复选框。

但是,如果有人可以先提供 (1) 方面的帮助,我将不胜感激 :) 我真的不知道现在在做什么!

【问题讨论】:

    标签: java android listview


    【解决方案1】:
    setListAdapter(new ArrayAdapter(this, R.layout.lista, aux))
    

    是开始,你是对的,但是当你想要一个自定义的 ListItem 布局时,你必须编写一个自定义的 ListAdapter。比如你extend ArrayAdapter&lt;YourItemClass&gt;。在那里您覆盖方法getView(),并在此方法中使用您的辅助对象的值填充您的自定义布局。

    对于 ArrayAdapter,您必须在布局中为列表视图项设置一个 id

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:id="@+id/textview" android:layout_weight="1">
    
    </TextView>
    

    用 id/textview 你说你的 listAdapter 渲染到这个视图中。

    edit:哦,你必须学习并遵守列表的持有者概念。这里:How to load the Listview "smoothly" in android

    【讨论】:

    • 感谢您的帮助,但我有一个问题...根据您的建议,我很快将 android:text 替换为 android:id (如您所说),并且不得不更换适配器setListAdapter(new ArrayAdapter(this,R.layout.lista, R.id.textview,aux));问题是:因为每个 listview 元素都在创建布局的所有其他元素,所以一切都搞砸了。我该如何解决这个问题?
    • 也许您的底层模型数据是一个“一体式”对象,因此您必须在自定义 ListAdapter 中定义 getItem(int) 方法。在此方法中,您定义如何从 ItemObject(aux) 中获取一项。
    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多