1

リストビュー用のカスタムレイアウトアイテムがあります。レイアウトアイテムにスピナーがあり、通常は値を入力する必要があります。android:entries
このメソッドで私が抱えている問題は、エンドユーザーが値を変更できないことです。これを含めたいと思います。レイアウトアイテムとそれに続くスピナーが同じリストビューで複数回繰り返されるため、プログラムで1回入力する方法が必要だと思います。私はそれを理解することができません。

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/customListItem"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/exerciselbl" />

        <Spinner
            android:id="@+id/Exercise"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:entries="@array/workout_items" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/repslbl" />

        <Spinner
            android:id="@+id/Reps"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:entries="@array/reps_count" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/weightlbl" />

        <EditText
            android:id="@+id/Weight"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number" />
    </LinearLayout>

</LinearLayout>

つまりandroid:entries="@array/workout_items"、XMLリソースファイル内のスピナーのすべてのアイテムを手動で入力することを意味し、プログラムの実行中にアイテムを動的に追加することはできないため、使用は避けたいと思います。

4

1 に答える 1

0

これがどのように行われるかの簡単な例です。明らかに、ジェネリックは変更でき、スピナーをロードする他の方法があります。

public void populateSpinner () {
    Spinner spinner = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    List<CharSequence> list = new ArrayList<CharSequence>();
    for (int i = 0; i < 10; i++) {
        list.add("Item " + i);
    }
    adapter.addAll(list);
    adapter.notifyDataSetChanged();
}

より重要な行の 1 つは ですadapter.notifyDataSetChanged()。これは、このスピナーに関連付けられたデータを更新する必要があることをビューに伝えるためです。

詳細については、ArrayAdapterクラスとSpinnerクラスを参照してください。

于 2012-12-16T14:36:30.633 に答える