2013-08-02 4 views
6
  • なぜ私たちはアンドロイドでインフレータを使用する必要があるのか​​についてあいまいさがありました。なぜカスタムレイアウト(以下同様)で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]); 

彼らはカスタムレイアウト用のAndroidのListViewで使用されているのはなぜおかげで、なぜリストビューでInflaterを使用するのですか?

答えて

13

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

LayoutInflater、レイアウトを定義するXMLファイルを取り、そしてViewオブジェクトに変換するための責任があるのAndroidシステムサービスの一つである... LayoutInflater Documentationの言うことを要約します。 OSは、これらのビューオブジェクトを使用して画面を描画します。

が、彼らはカスタムレイアウト用のAndroidのListViewで使用されているなぜ私はいつも、私たちはアンドロイドでインフレータを使用する必要がある理由について曖昧さを持っていましたか?

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

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

これを使用する利点はありません。静的XMLレイアウトを拡張するには、いくつかの形状またはフォームでLayoutInflaterを使用する必要があります。

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

+0

"利点はありません。何らかの方法でビューを膨らませる必要があります"そのステートメントは明らかに間違っています。コード –

+0

でビューを作成することができます。 – Joel

+0

「Inflaterを使用する利点は何ですか? "私はInflaterを使用してコードをビューに作成する利点は何ですか?"あなたの答え「それを使用する利点はありません[...]」は、「拡張された」質問に答えると間違っています。 –

3

は、私はいつも、アンドロイドにインフレータを使用する理由おしっこ必要に曖昧さを持っていましたか?
これらは、各行のビューを作成するために使用されます。

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

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

Inflaterを使用する利点は何ですか?
何に比べて?どのようにXMLレイアウトからビューを作成したいですか?簡単に言えば

+0

だから、リストビューの行のビューを作成するには、インフレータを使用する必要がありますか? –

+1

XMLレイアウトのインフレータ、または 'new View()'を使ってプログラムで実装します。ほとんどの場合、おそらくXMLレイアウトを使用したいと思うでしょう。 – SimonSays

0

は、インフレータは、あなたがプログラムですべてのものを作成する必要がないように、リソースのレイアウトファイルからビューを作成することができます。

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

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

rowView.findViewById()を呼び出すことによって、あなたはそのレイアウト内に作成されたビューにアクセスすることができます。 ListViewのために、行XMLファイルを作成し、展開してデータをビューに配置します。

関連する問題