2

オブジェクトのリスト (POI - 関心のあるポイント) があり、それらを ListView に表示したいと考えています。

また、各アイテムのレイアウトは少し複雑です。

POI オブジェクトの場合、そのname address distanceand 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

では、実装と拡張の可能性にどちらが適しているのだろうか?

4

1 に答える 1

0
  1. 次の場合に選択できますArrayAdapter

    • データを保持するために配列を使用している場合。
    • レイアウトには、UI 要素へのデータの単純なマッピングとは別に、いくつかのロジックが含まれています (たとえば、一部の要素が非表示になっているなど)。
  2. SimpleCursorAdapter次の場合は改善される可能性があります。

    • データには既にカーソルがあり、レイアウトのニーズは単純です。

多くは正確な要件に依存するため、非常に一般的なガイダンスを提供することは困難です. また、将来やりたいことも考えてみてください。ArrayAdapterコードを変更する必要がある場合でも、複雑なレイアウトを簡単に作成できます。

于 2013-10-28T05:12:57.633 に答える