Я думаю, что вы можете написать собственный адаптер, расширяющий класс BaseAdapter, и использовать его в обоих случаях.
В вашем классе, который расширяет BaseAdapter, у вас будет List<DataEntry>
, где DataEntry - это Java POJO класспредставляет данные, поступающие из сети или базы данных (при условии, что они имеют те же свойства).Предполагая, что вы заполнили List<DataEntry>
объектами DataEntry, уже содержащими данные, вы можете сделать следующее:
1) В методе getView () класса, который расширяет BaseAdapter, в inflate вы будете использоватьXML-макет, который в основном представляет 1 строку данных.Предполагая, что вы будете отображать данные через TextView, макет строки данных 1 будет иметь столько же элементов TextView, сколько и число полей данных вашего объекта DataEntry.После раздувания вы помещаете значения в TextViews как:
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' в конструкторе - это контекст, связанный с текущей операцией, из которой вы выполняете вызов.
Структура класса, расширяющая 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
}