私はカスタムアダプタを作成し、BaseAdapterクラスを拡張して、両方の場合に使用できると思います。
BaseAdapterを拡張したクラスでは、List<DataEntry>
があります。ここで、DataEntryはJava POJOクラスで、Webまたはdbからのデータを表します(同じプロパティがあるものとします)。
)BaseAdapterを拡張するクラスのgetView()メソッドで、inflateでxmlレイアウトを使用します。基本的に1データ行を表します。 TextViewを使用してデータを表示すると仮定すると、1データ行のレイアウトには、DataEntryオブジェクトのデータフィールドの数と同じ数のTextView要素があります。
<ListView android:id="@+id/YourListViewID" android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
とそのあなたの後:あなたはあなたのレイアウトでUIを更新する過程で、あなたのようなリストビューを持っている必要があります)
TextView someTextViewToDisplayField = (TextView) convertView.findViewById(R.id.yourID);
someTextViewToDisplayField.setText(String.valueOf(dataEntry.getWhateverProperty()));
2:インフレートした後、あなたは次のようにTextViewsに値を入れますList<DataEntry>
は、すでにデータが移入されBaseAdapter
ListView listView = (ListView) findViewById(R.id.YourListViewID);
YourClassExtendingBaseAdapter adapter =
new YourClassExtendingBaseAdapter(this, listOfEntryDataObjects);
listView.setAdapter(adapter);
listOfEntryDataObjectsを拡張するクラスを初期化します。コンストラクタの '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
}
なぜあなたがDBから検索
Cursor
に通知Uri
を設定し実行するにはデータが古すぎ、ウェブ上で新しいデータを入手してカーソルで使用すると、データベースを更新しませんか? – user370305
ウェブから直接データを表示し、バックグラウンドでデータベースを更新したいと考えています。 –
ウェブから直接データを表示するのではなく、最初にデータベースを更新し、そのデータをカーソルで表示することをお勧めしました。arraylistの使用を避け、データを表示してデータベースに保存することもできます。 – user370305