オブジェクトのリスト (POI - 関心のあるポイント) があり、それらを ListView に表示したいと考えています。
また、各アイテムのレイアウトは少し複雑です。
POI オブジェクトの場合、そのname
address
distance
and picutre
(存在する場合) などを表示します。
GoogleでStackoverflowで検索したところ、ArrayAdapter
.
この例に示すように、次のように拡張する を作成する必要がありAdapter
ます。ArrayAdapter
private class POIAdapter extends ArrayAdapter<POI> {
private ArrayList<POI> items;
public POIAdapter(Context context, int textViewResourceId, ArrayList<POI> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
POI o = items.get(position);
if (o != null) {
TextView tt = (TextView) v.findViewById(R.id.toptext);
TextView bt = (TextView) v.findViewById(R.id.bottomtext);
if (tt != null) {
tt.setText("Name: "+o.getName()); }
if(bt != null){
bt.setText("Address: "+ o.getAddress());
}
}
return v;
}
}
ご覧のとおり、このアダプターの要素を参照する必要がview
あるため、いつか POI アイテムのレイアウトが変更される可能性があるため、このアダプターをそれに応じて変更する必要があるため、最適な選択ではないと思います。
次にSimpleCursorAdapter
、カーソルから XML ファイルのビューに列をマップできる を見つけましたが、独自の を作成する必要があるようですCursor
。
では、実装と拡張の可能性にどちらが適しているのだろうか?