私はListViews用のカスタムArrayAdaptersをちょっと混乱させてきました。それらを拡張するとき、私は常にリソース引数として-1(存在しないリソースID)をsuperに渡しました。 getViewをオーバーライドするときに、他のものを渡すことに潜在的な利点がありますか?ArrayAdapterを拡張してgetViewをオーバーライドするとき、resource/textViewResourceId引数を完全に冗長に渡していますか?
答えて
getViewをオーバーライドすると、他の場所を通過する可能性はありますか?
確かに。実際のレイアウトとTextView
リソースIDを渡した場合は、super.getView()
メソッドでView
のインフレーションを処理し、単一のTextView
にテキストを割り当てることができます。次に、getView()
オーバーライドは「空白を埋める」必要があります。
public class Item {
String text;
int imageResId;
public Item(String text, int imageResId) {
this.text = text;
this.imageResId = imageResId;
}
@Override
public String toString() {
return text;
}
}
そしてそうのような単純な項目のレイアウト:
:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<ImageView android:id="@+id/item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@+id/item_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
そして、私たちのArrayAdapter
サブクラスは、単純にこの可能性が例えば
は、我々は次のような単純なリスト項目のクラスを持っていると言います
public class MyAdapter extends ArrayAdapter<Item> {
public MyAdapter(Context context, List<Item> items) {
super(context, R.layout.list_item, R.id.item_text, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
((ImageView) v.findViewById(R.id.item_image))
.setImageResource(getItem(position).imageResId);
return v;
}
}
toString()
のオーバーライドを01に実装していますクラスは、正しいString
〜ArrayAdapter
を提供します。
super(context, R.layout.list_item_layout, R.id.item_text_inside_layout, items);
第3のパラメータは、ListView/Gridviewのカスタムレイアウトを使用する場合に便利です。
ArrayAdapterを使用して、Object.toString()
を使用して、Listviewの各項目の値を取得します。表示するTextViewが必要です。したがって、3つのオプションがあります。
テキストアイテムのデフォルトレイアウトを使用します。 like
android.R.layout.simple_list_item_1
テキストアイテムにカスタムレイアウトを使用し、textViewIdでデータを配置します。
super(context, R.layout.list_item_layout, R.id.item_text_inside_layout, items);
ArrayAdapter
ではなく、カスタムアダプタを使用してください。BaseAdapter
を拡張して、あなたが望むビューを膨らませることができます
希望すると助かります!
私はdocを見ていて、getViewはArrayAdapterでのみ宣言されていたので、BaseまたはListAdapterが正確にどのように動作したかについて混乱していました。あなたのコメントを見て、ドキュメントを少し掘り下げて、 -doh! - ありがとう、私はもう少しドキュメントをナビゲートするのに慣れる必要があります:) –
- 1. ArrayAdapterでgetViewをオーバーライドしても、チェックボックスを維持しますか?
- 2. ArrayAdapterのgetViewをオーバーライドして3つのTextviewを埋めます
- 3. クラスを拡張し、すべてのコンストラクタ引数をスーパーに渡します
- 4. オーバーライド関数を拡張して条件に基づいて拡張関数を実行します
- 5. 引数を環境変数に渡すと、完全に安全ですか?
- 6. 完全転送によるstd :: threadへの参照として可変長テンプレート引数を渡す
- 7. アンドロイドExpandableListView完全な高さを拡張していない
- 8. gitコマンドを(オーバーライドして)拡張することはできますか?
- 9. 拡張Active Recordは、冗長性を減らすために
- 10. setOnClickListenerがCustomAdapter内で動作していませんArrayAdapterを拡張します
- 11. 既存のエンティティを拡張してゲッターとセッターをオーバーライドする
- 12. は、不完全なフレームワークでUpperClassを拡張できますか?
- 13. android.widget.MediaControllerを拡張してsetSystemUiVisibilityをオーバーライドできません
- 14. スレッド関数の引数として可変長リストを渡す
- 15. "ショートカットサイト"から完全なサイトにリダイレクトして、引数を保持します
- 16. 空白で引数として冗長な設定
- 17. PyQtはウィンドウが十分大きいときにスクロールエリアを完全に拡張します
- 18. ジェネリック拡張メソッドを作成するときに何を拡張していますか?
- 19. 引数を引き渡して単純に何もしない
- 20. dbGetQuery()に複数の引数を渡していますか?
- 21. データフレームを渡して引数として関数pandasを渡す
- 22. エクスプローラはコマンドライン引数に完全な実行可能パス名を渡します
- 23. ArrayAdapter getView()メソッドはどのように機能しますか?
- 24. Python関数を引数として渡さずに渡しますか?
- 25. システム変数をエスケープして引き数として渡す
- 26. すでにActionBarActivityを拡張しているメインアクティビティ内で追加クラスを拡張していますか?
- 27. 更新パネルがリモートサーバーに完全なポストを引き起こしています
- 28. 引数を引数として渡します
- 29. 文字列 "@"を引数としてGNUにマクロとして渡しますか?
- 30. GraphQLとMongooseは、引数に渡された引数を渡してヌルに上書きします
これは私の最初の考えでもありました。すぐに試しましたが、super.getViewを無視しました。非常によくカップルの行を削除することができます例を一緒に入れて、ありがとう:) –
問題はありません。コンストラクタで無効なレイアウトリソースを渡した場合、 'super.getView()'を呼びたくない場合は、 'Resources $ NotFoundException'を取得します。 –