最好在android中使用ListView显示对象列表

时间:2013-10-28 05:01:18

标签: android android-listview

我有一个对象列表(POIs-感兴趣的点),现在我想在`ListView中显示它们。

每个项目的布局有点复杂。

对于POI对象,我会显示其name address distancepicutre(如果有)等等。

谷歌搜索并在Stackoverflow上搜索后,我似乎可以使用ArrayAdapter

如本次考试所示,我必须创建Adapter,其中ArrayAdapterfor 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

所以我想知道哪个更适合实施和可能的扩展?

1 个答案:

答案 0 :(得分:0)

  1. 您可能需要选择ArrayAdapter if:

    • 如果您正在使用数组来保存数据。
    • 除了简单的数据到UI元素的映射(例如,某些元素被隐藏等)之外,布局中还有一些逻辑。
  2. 如果符合以下情况,
  3. SimpleCursorAdapter可能会更好:

    • 您已拥有包含数据的光标,并且您的布局需求很简单。
  4. 很难给出非常一般性的指导,因为批量取决于确切的要求。另外,想想你将来可能想做什么。 ArrayAdapter使您可以更轻松地创建复杂的布局,即使您需要进行代码更改才能实现这一目标。