我認爲你可以編寫一個自定義適配器,擴展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