63

ActivityAndroid でを作成しようとしましたが、このアクティビティにはListView何も含まれていません。

私が知っているように、リストビューを埋めるにはArrayAdapter.

したがって、ArrayAdapter を理解するために、次のリンクを読みました。

http://developer.android.com/reference/android/widget/ArrayAdapter.html

しかし、まだはっきりと理解できません!

最大の疑問の 1 つは、コンストラクターがTextViewリソース ID を必要とするのに、アクティビティに必要な TextView がないのはなぜですか?

これが唯一のコンストラクターだと言っているのではなく、その背後にあるロジックを理解できないだけです。

簡単なリストビューを作成するために、次のリンクも参照しました。

ArrayAdapter の例を使用した単純な ListView。

しかし、やはり私の主な疑問は、なぜ TextView リソース ID が必要なのかということです。

誰かが例を挙げて説明できれば、それは非常に役に立ちます。

編集:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_1, android.R.id.text1, values);
4

8 に答える 8

80

ArrayAdapter は TextView を使用して、その中の各項目を表示します。バックグラウンドでは、toString()保持している各オブジェクトのメソッドを使用して、TextView 内に表示します。ArrayAdapterには使用できる多くのコンストラクターがあり、例で使用したコンストラクターは次のとおりです。

ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)

デフォルトでは、ArrayAdapter はデフォルトの TextView を使用して各項目を表示します。ただし、必要に応じて、独自の TextView を作成し、TextView クラスを拡張することで複雑なデザインを実装することもできます。これは、使用するためにレイアウトに入れる必要があります。これを textViewResourceId フィールドで参照して、オブジェクトをデフォルトではなくこのビューにバインドできます。

あなたの使用のために、コンストラクターを使用することをお勧めします:

ArrayAdapter(Context context, int resource, T[] objects). 

あなたの場合、これは次のようになります。

ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values)

そしてそれはうまくいくはずです。これにより、各文字列がデフォルトの TextView ディスプレイ (プレーンでシンプルな白い背景) にバインドされます。

したがって、質問に答えるために、textViewResourceId を使用する必要はありません。

于 2014-01-14T19:19:34.650 に答える
21

しかし、再び主な疑問は、なぜ TextView リソース ID が必要なのか?

コンストラクタとパラメータを見てください。

public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

API レベル 1 コンストラクターに追加

パラメーター

context現在のコンテキスト。

resource ビューをインスタンス化するときに使用するレイアウトを含むレイアウト ファイルのリソース ID。

textViewResourceId データが取り込まれるレイアウト リソース内の TextView の ID オブジェクト で表すオブジェクトListView

android.R.id.text1Android リソース内のテキストの ID を参照します。したがって、あなたの活動にそれを持っている必要はありません。

ここに完全なリストがあります

http://developer.android.com/reference/android/R.id.html

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, android.R.id.text1, values);

thisアクティビティ コンテキストを参照します

android.R.layout.simple_list_item_1simple_list_item_1 は android.R.layout のレイアウトです。

android.R.id.text1Android リソース ID を参照します。

valuesあなたが提供したリンクからの文字列配列です

http://developer.android.com/reference/android/R.layout.html

于 2013-09-29T15:05:00.663 に答える
2

テキストビューに id を使用する必要はありません。Android arrayadapterから詳細を学ぶことができます。以下のコードは、arrayadapter を初期化します。

ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);
于 2015-01-14T19:01:14.507 に答える
2
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)

私もAndroidが初めてなので、間違っているかもしれません。しかし、リストビューの作成にこれを使用している間の私の理解によると、2番目の引数はリスト項目のレイアウトです。レイアウトは多くのビュー (画像ビュー、テキスト ビューなど) で構成されます。3 番目の引数では、テキストを表示するビューまたはテキストビューを指定します。

于 2015-01-11T05:58:10.250 に答える