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

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]);

ありがとう、

4

3 に答える 3

23

インフレータとは?

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

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

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

Inflater を使用する利点は何ですか?

使うメリットはありません。静的 XML レイアウトを拡張するには、何らかの形状または形式で LayoutInflater を使用する必要があります。

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

于 2013-08-02T17:41:04.687 に答える
3

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

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

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

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

于 2013-08-02T17:32:30.540 に答える
0

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

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

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

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

于 2013-08-02T17:33:17.457 に答える