我在网上看到的所有示例每个项目只包含1个TextView,并且它们从数组加载数据。我不明白如何指定哪些数据去哪里。例如,我的项目布局如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/receiver"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
如何在数组中保存数据,以便可以在ListView中使用此布局?
答案 0 :(得分:2)
以下是自定义列表适配器:
private class ListAdapter extends ArrayAdapter<RSSItem> {
private List<Item> items;
public ListAdapter(Context context, int textViewResourceId, List<Item> items) {
super(context, textViewResourceId, items);
this.items = items;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item, null);
}
Item item = items.get(position);
if (item != null) {
TextView title = (TextView) v.findViewById(R.id.tvTitle);
TextView description = (TextView) v.findViewById(R.id.tvDescription);
if (title != null) {
title.setText(item.getTitle());
}
if (description != null) {
description.setText(item.toString());
}
}
return v;
}
}
这是 项目 类,会保存您的数据:
public class Item {
private String title = null;
private String description = null;
RSSItem() {
}
public void setTitle(String title) {
this.title = title;
}
public void setDescription(String description) {
this.description = description;
}
public String getTitle() {
return title;
}
public String getData() {
return data;
}
}
...这里有一个类,你可以用它来获取某种数组中的所有列表数据:
public class ListData {
private int itemcount = 0;
private List<Item> itemlist;
ListData () {
itemlist = new Vector<Item>();
}
int addItem(Item item) {
itemlist.add(item);
itemcount++;
return itemcount;
}
Item getItem(int location) {
return itemlist.get(location);
}
List<Item> getAllItems() {
return itemlist;
}
int getItemCount() {
return itemcount;
}
}
在您的主要课程( 活动 )中,您应该正确填写您的数据。
答案 1 :(得分:0)
使用适配器,您可以为listview提供数据。当您使用getView()方法提供数据时,您可以向这些TextView添加数据。网上有成千上万的例子......
这是一个例子(可以完成对这些代码的改进,当然)
@Override
public View getView(int position, View convertView, ViewGroup parent) throws NullPointerException {
ViewHold viewHold;
if (convertView == null)
{
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.temp2, null);
viewHold = new ViewHold();
viewHold.go = (Button)convertView.findViewById(R.id.gotherefav);
viewHold.remove = (Button)convertView.findViewById(R.id.removefav);
convertView.setTag(viewHold);
}
else
{
viewHold=(ViewHold)convertView.getTag();
}
String t = items.get(position);
if (t != null) {
TextView itemText = (TextView) convertView.findViewById(R.id.item); // here you add data from arrayLists
TextView itemText2 = (TextView) convertView.findViewById(R.id.item2);
itemText2.setText(t);
itemText.setText(t);
itemText.invalidate();
}
viewHold.go.setVisibility(View.GONE);
viewHold.remove.setVisibility(View.GONE);
return convertView;
}
}