我认为您可以编写一个自定义适配器,扩展 BaseAdapter 类并将其用于两种情况。
在扩展 BaseAdapter 的类中,您将有一个List<DataEntry>
,其中 DataEntry 是 Java POJO 类,表示来自 web 或 db 的数据(假设它具有相同的属性)。假设您已经填充了List<DataEntry>
DataEntry 对象,已经包含数据,您可以执行以下操作:
1) 在扩展 BaseAdapter 的类的 getView() 方法中,在 inflate 中,您将使用 xml 布局,基本上代表 1 个数据行。假设您将通过 TextView 显示数据,则 1 数据行布局将具有与 DataEntry 对象的数据字段数一样多的 TextView 元素。膨胀后,您将值放入 TextViews 中,例如:
TextView someTextViewToDisplayField = (TextView) convertView.findViewById(R.id.yourID);
someTextViewToDisplayField.setText(String.valueOf(dataEntry.getWhateverProperty()));
2) 在您更新布局中的 UI 的过程中,您应该有一个 ListView,例如:
<ListView android:id="@+id/YourListViewID" android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
然后初始化扩展 BaseAdapter 的类
ListView listView = (ListView) findViewById(R.id.YourListViewID);
YourClassExtendingBaseAdapter adapter =
new YourClassExtendingBaseAdapter(this, listOfEntryDataObjects);
listView.setAdapter(adapter);
listOfEntryDataObjectsList<DataEntry>
已经填充了数据。构造函数中的“this”是与当前 Activity 关联的上下文,您从中进行调用。
扩展 BaseAdapter 的类结构:
public class YourClassExtendingBaseAdapter extends BaseAdapter {
private Context context;
private List<DataEntry> entries;
public YourClassExtendingBaseAdapter(Context context,
List<DataEntry> entries) {
this.context = context;
this.entries = entries;
}
// Overwriting necessary methods
}