我认为你可以编写一个自定义适配器,扩展BaseAdapter类并将它用于这两种情况。
在您的类中,扩展了BaseAdapter,您将有一个List<DataEntry>
,其中DataEntry是Java POJO类,表示来自web或db的数据(假设它具有相同的属性)。假设你已经用DataEntry对象填充了List<DataEntry>
,已经包含了你可以执行的数据,如下所示:
1)在扩展BaseAdapter的类的getView()方法中,你将使用xml布局,这就是基本上代表1个数据行。假设您将通过TextView显示数据,则1个数据行布局将具有与DataEntry对象的数据字段数一样多的TextView元素。在充气之后,你把像TextViews值:在这个过程中,你更新你的布局的UI
TextView someTextViewToDisplayField = (TextView) convertView.findViewById(R.id.yourID);
someTextViewToDisplayField.setText(String.valueOf(dataEntry.getWhateverProperty()));
2),你应该有这样一个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);
的listOfEntryDataObjects是List<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
}
为什么如果数据太旧,新的数据可以在网上找到,然后在游标中使用它,不是更新数据库吗? – user370305
我想直接从网页显示数据,然后在后台更新数据库。 –
我不建议直接从网络显示数据,而是建议您首先更新数据库,然后使用光标显示该数据。因此,您可以避免使用arraylist,也可以重新解析数据以供显示并存储在数据库中。 – user370305