我有一个对象列表(兴趣点),现在我想将它们显示在一个`ListView.
而且每个项目的布局都有些复杂。
对于 POI 对象,我将显示其name
address
distance
和picutre
(如果有)等。
在谷歌和 Stackoverflow 上搜索之后,似乎我可以使用ArrayAdapter
.
如本例所示,我必须创建一个Adapter
which extends 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
which 可以将列从光标映射到 XML 文件中的视图,但似乎我必须创建自己的Cursor
.
所以我想知道哪个更适合实施和可能的扩展?