1

おはよう、

ArrayAdapter をビューに接続する情報が 1 つ不足しているようです (最初の Android アプリでまだ学習中)。MyInfoClass というクラスを作成します。これは、データを保持するためのプロパティの一部です。クラスにデータの行を入力し、最終的に ArrayList(MyInfoClass> を取得します。これまでのところ、すべてが見栄えがよく、値はデバッグ パースペクティブで期待どおりです。

また、いくつかの TextViews を持つ XML レイアウトもあります。このレイアウトを使用して、ArrayList(MyInfoClass> に保持されているさまざまな「データのセット」を表示したいと思います。これを行うには、ArrayAdapter を使用することを理解しており、次の行で行います。

ArrayAdapter<MyInfoClass> X = new ArrayAdapter<MyInfoClass>(this, R.layout.main, R.id.txtvw_PrevLift, ld_data);

(ld_data は ArrayList(MyInfoClass> オブジェクト)

私の混乱は...自分が何をしているのかわからないことから来ていますが、とにかく、MyInfoClass のプロパティを対応する TextView に接続する方法を理解していないことが原因です。ArrayAdapter のドキュメントには、TextView id のリストを取るコンストラクターが表示されていません????

ご協力ありがとうございました。JB

私の混乱を解消するために、私はリストにバインドしません....おそらくそうすべきでしょうか? ビュー全体で1行のデータを表現したかっただけです。読みやすくするために多くのコードを削除しましたが、これが私の見解です。一部のテキスト ビューは静的なラベルであり、その他はデータが取り込まれます。ボタンは前後のナビゲーション用です。

<RelativeLayout....>

    <ImageView
        android:id=.../>

    <TextView
        android:id=.../>

    <ImageView
        android:id=.../>


    <TextView
        android:id=.../>

    <TextView
        android:id=.../>

    <TextView
        android:id=.../>

    <Button
        android:id=.../>

    <Button
        android:id=.../>

</RelativeLayout>
4

2 に答える 2

3

あなたの場合、使用するのが最善ですSimpleAdapter

リスト項目を表す XML ファイルを定義します。この XML ファイルにはTextViewsMyInfoClass. だと言ってmy_list_item.xml

<LinearLayout...>
<TextView android:id=name.../>
<TextView android:id=gender.../>
<TextView android:id=occupation.../>
</LinearLayout>

それらのデータを次のように持っているとします。MyInfoClass.getName(), .getGender(), .getOccupation()

各マップが 1 つのリスト項目のデータを表すマップのリストを作成します。

List<HashMap<String, String>> maps = new ArrayList<HashMap<String, String>>();

このリストに自分の情報を入力します。

for(int i=0; i<myArray.size(); ++i) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("name", myArray.get(i).getName()); 
        map.put("gender", myArray.get(i).getGender()); 
        map.put("occupation", myArray.get(i).getOcupation()); 
        maps.add(map); // add this entry to the list
    );

また、2 つの配列を作成します。1 つはキーの名前 (「name」、「occupation」、「gender」) を持ち、もう 1 つは対応するリソースの ID を持ちます。それらはString[] from, int[] toであるため、キーを持つマップ内のデータは、from[n]id を持つビューに表示されますto[n]

String[] from = new String[] {"name", "gender", "occupation" };
int[] to = {R.id.name, R.id.gender, R.id.occupation }

次に、SimpleAdapterそのリストと XML ファイルを使用して作成します。

SimpleAdapter mAdapter = new SimpleAdapter(YourActivity.this, maps, R.layout.my_list_item, from, to);

次に、このアダプターをに設定するListActivityと、リストが表示されます。

setListAdapter(mAdapter);

Strings 以外のものを表示したい場合は、SimpleAdapter をサブクラス化し、 のようないくつかの関数を再定義する必要がありますがsetViewTextsetViewImage私はそれについてあまり知りません

于 2012-05-14T16:27:54.683 に答える
1

シンプルリストアダプタをお探しだと思います。

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

これにより、データを取得するフィールド(コンストラクターのfrom [])とそのデータを配置する場所(コンストラクターのto [])を指定できます。

Simple List Adapterがデータオブジェクトで機能するかどうかはわかりませんが、ハッシュマップで機能することはわかっています。データオブジェクトリストを操作するときに、BaseAdapterタイプを拡張するカスタムアダプタを使用します。

リストビューで単純なアダプターを使用する方法については、次のチュートリアルを参照してください:http: //eureka.ykyuen.info/2010/01/03/android-simple-listview-using-simpleadapter/

編集:データオブジェクトを使い続ける場合は、データオブジェクトを使用したカスタムSimpleAdapterの簡単な実装を示す別のQAを次に示します。ArrayAdapter<myClass>の使用方法

編集#2 ::申し訳ありませんが、あなたはリストにバインドしていると思いました。最近、他の誰かがこの問題を抱えていたので、リストビューの基本インフラストラクチャを使用することを提案しましたが、リストビューのサイズ全体にまたがるアイテムが1つだけになるように変更します。アイテムは基本的に、すべてのテキストビューを含むレイアウトになります。この例では、表示するアイテム(情報を取得するデータオブジェクト)を追跡し、それを使用する必要があります。ここで私の提案された解決策を見ることができます:Android-アダプターに裏打ちされたデータを使用したウィザードタイプのアクティビティ

于 2012-05-14T16:13:13.370 に答える