1. ホーム
  2. android

[解決済み] カスタムアダプタを自作する場合、getView()メソッドはどのように動作するのでしょうか?

2022-11-22 15:25:35

質問

質問です。

  1. LayoutInflaterの機能は具体的に何ですか?
  2. 私が読んだすべての記事は、なぜ convertview が null かどうかを最初にチェックするのですか?それがヌルであるとき、それは何を意味し、そうでないとき、それは何を意味するのですか?
  3. このメソッドが受け取る親パラメータは何ですか?

どのように解決するのですか?

1:この LayoutInflater はレイアウト XML ファイルを受け取り、その内容からさまざまなビューオブジェクトを作成します。

2: アダプタはViewを再利用するように作られています。Viewがスクロールされて見えなくなったとき、新しく現れるViewの1つに利用することができます。この再利用されるViewは convertView . もしこれが null ならば、再利用される View が存在しないので新しく作成しなければならないことを意味し、そうでなければ新しく作成するのを避けるためにこれを使用すべきです。

3: この parent が提供されているので、適切なレイアウトパラメータのために、その中にビューを膨らませることができます。

これらをすべて使用すると、リスト (あるいはアダプタを使用するその他のビュー) に表示するビューを効果的に作成することができます。

public View getView(int position, @Nullable View convertView, ViewGroup parent){
    if (convertView == null) {
        //We must create a View:
        convertView = inflater.inflate(R.layout.my_list_item, parent, false);
    }
    //Here we can do changes to the convertView, such as set a text on a TextView 
    //or an image on an ImageView.
    return convertView;
}

を使用していることに注意してください。 LayoutInflater は、その parent がその引数として使用できること、そして、どのように convertView が再利用されるのか。