2

我有一个对象列表(兴趣点),现在我想将它们显示在一个`ListView.

而且每个项目的布局都有些复杂。

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

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

如本例所示,我必须创建一个Adapterwhich 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 项目的布局可能有一天会改变,那么我必须相应地更改此适配器。

然后我发现SimpleCursorAdapterwhich 可以将列从光标映射到 XML 文件中的视图,但似乎我必须创建自己的Cursor.

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

4

1 回答 1

0
  1. 您可能需要选择ArrayAdapter

    • 如果您使用数组来保存数据。
    • 除了数据到 UI 元素的简单映射(例如,某些元素被隐藏等)之外,布局中还有一些逻辑
  2. SimpleCursorAdapter如果:

    • 您已经有了一个带有数据的光标,并且您的布局需求很简单。

很难给出一个非常笼统的指导,因为很多取决于确切的要求。另外,想想你将来可能想做的事情。ArrayAdapter即使您需要更改代码来实现这一点,也可以更轻松地创建复杂的布局。

于 2013-10-28T05:12:57.633 回答