web-dev-qa-db-ja.com

リストビューでInflaterを使用する理由

  • Androidでインフレータを使用する必要がある理由については常にあいまいでしたが、ListViewでカスタムレイアウト(以下のように)に使用されるのはなぜですか?
  • インフレータとは何ですか?
  • インフレータを使用する利点は何ですか?

public class MobileArrayAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final String[] values;


public MobileArrayAdapter(Context context, String[] values) {
    super(context, R.layout.list_mobile, values);
    this.context = context;
    this.values = values;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View rowView = inflater.inflate(R.layout.list_mobile, parent, false);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
    textView.setText(values[position]);

ありがとう

9
user2609157

インフレータとは何ですか?

LayoutInflater Documentation の内容を要約すると... LayoutInflaterは、定義するXMLファイルの取得を担当するAndroidシステムサービスの1つです。レイアウトを作成し、それらをViewオブジェクトに変換します。次に、OSはこれらのビューオブジェクトを使用して画面を描画します。

Androidでインフレータを使用する必要がある理由については常にあいまいでした。なぜそれらはAndroidカスタムレイアウトのListViewで使用されるのですか?

通常、LayoutInflaterを直接使用する必要はありません。 Androidは、アクティビティのsetContentView()メソッドでonCreate()を呼び出すと、レイアウトのインフレーションのほとんどを実行します。したがって、プログラマーは、ビューがインフレートされていることを確認する責任があります。次に、ListViewのコンテキストでビューをインフレートする必要があります。Adapterクラスは、次の場合にインフレーションを実行できます。各アイテムをカスタマイズする必要はありませんが、リストに表示されるビューをカスタマイズする場合は、他に使用できる既存のメソッドがないため、LayoutInflaterを使用して各ビューを手動で膨らませる必要があります。

インフレータを使用する利点は何ですか?

それを使用することに利点はありません。静的XMLレイアウトを拡張するには、何らかの形または形式でLayoutInflaterを使用する必要があります。

または、Javaコードを使用して動的にビューを作成することもできます。ただし、メソッドを呼び出してビューの各プロパティを手動で設定する必要があります。私の意見では、XML /を使用する方が簡単です。インフレーションプロセス。さらに、Androidはビルド時にXMLファイルを前処理するため、実行時間が短縮されます。

21
Joel

Androidでインフレータを使用する必要がある理由については常にあいまいさがありました。なぜそれらはAndroidカスタムレイアウトのListViewで使用されますか?
これらは、各行のビューを作成するために使用されます。

インフレータとは?
XMLレイアウトからビューを作成するシステムサービス。

以下のコードでは、Inflatorが使用されている理由を理解しようとしていますか?
インフレータは、行のビューを作成するために使用されます。

インフレータを使用する利点は何ですか?
何と比べて? XMLレイアウトからビューをどのように作成しますか?

3
SimonSays

簡単に言うと、インフレータを使用すると、リソースレイアウトファイルからビューを作成できるため、プログラムですべてを作成する必要はありません。

あなたの例では、レイアウト_R.layout.list_mobile_を膨らませます。これにより、その中のすべてのビューにアクセスできます。たとえば、次のように呼び出します。

_TextView textView = (TextView) rowView.findViewById(R.id.label);
_

rowView.findViewById()を呼び出すことにより、そのレイアウト内で作成されたビューにアクセスできます。多くの場合、ListViewsの場合、行XMLファイルがあり、それを膨らませてデータをビューに配置します。

0
trevor-e