我有一个对象列表(POIs-感兴趣的点),现在我想在`ListView中显示它们。
每个项目的布局有点复杂。
对于POI对象,我会显示其name
address
distance
和picutre
(如果有)等等。
谷歌搜索并在Stackoverflow上搜索后,我似乎可以使用ArrayAdapter
。
如本次考试所示,我必须创建Adapter
,其中ArrayAdapter
,for example:
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
。
所以我想知道哪个更适合实施和可能的扩展?
答案 0 :(得分:0)
您可能需要选择ArrayAdapter
if:
SimpleCursorAdapter
可能会更好:
很难给出非常一般性的指导,因为批量取决于确切的要求。另外,想想你将来可能想做什么。 ArrayAdapter
使您可以更轻松地创建复杂的布局,即使您需要进行代码更改才能实现这一目标。