【发布时间】:2016-08-03 10:23:01
【问题描述】:
我需要使用 ArrayAdapter 在我的 Android 应用程序中填充 ListView。为了use the ArrayAdapter,它说
例如,如果你想在 ListView 中显示一个字符串数组,则使用构造函数初始化一个新的 ArrayAdapter,以指定每个字符串和字符串数组的布局:
ArrayAdapter 适配器 = 新的 ArrayAdapter(this, android.R.layout.simple_list_item_1, myStringArray);
这个构造函数的参数是:
- 您的应用上下文
- 包含数组中每个字符串的 TextView 的布局
- 字符串数组
然后只需在 ListView 上调用 setAdapter():
ListView listView = (ListView) findViewById(R.id.listview); listView.setAdapter(适配器);
但是,我没有字符串数组,我有一个包含字符串值的对象数组。
public class Headers {
private String from;
private String to;
private String subject;
public Headers (String from, String to, String subject){
this.from = from;
this.to = to;
this.subject = subject;
}
public String getFrom() { return from; }
public void setFrom(String from) { this.from = from; }
public String getTo() { return to; }
public void setTo(String to) { this.to = to; }
public String getSubject() { return subject; }
public void setSubject(String subject) { this.subject = subject; }
}
我的布局确实包含一个与我的对象中的值相对应的 TextView。
这是我的 ListView 布局:
<LinearLayout android:orientation="vertical">
<ListView android:id="@+id/listOfHeaders" >
</LinearLayout>
这里是ListView中每一行由ArrayAdapter填充的布局:
<LinearLayout android:orientation="horizontal">
<TextView android:id="@+id/toTextView" />
<TextView android:id="@+id/fromTextView" />
<TextView android:id="@+id/subjectTextView" />
</LinearLayout>
【问题讨论】:
-
所以使用
ArrayAdapter<Headers>,而不是ArrayAdapter<String> -
是的,但是我需要用 Headers 对象中的字符串填充我的 TextView,看起来 ListView 想要一个字符串数组。
-
不是真的,你可以重写
getView方法并做所有的映射(如果你使用ArrayAdapter(Context context, int resource, int textViewResourceId)ctor 会更容易) -
我不知道如何实现它的复杂性。这就是我发布到 StackOverflow 的原因。
-
只需覆盖getView,调用super,看看super返回什么,那么3个简单的findViewById就足够了
标签: android listview android-arrayadapter