0

所以我一直在尽力让这个 Spinner 能够根据所做的选择更改列表。例如,更改专用于地板的 Spinner,在按下点微调器时会产生一组不同的点:

XML 格式:

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="202dp"
    android:layout_height="0dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_weight="0.49" >

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

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="New Reservation"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="First Name"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/Fname"
            android:layout_width="129dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName" >

            <requestFocus />
        </EditText>

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Last Name"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/Lname"
            android:layout_width="126dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="License"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/License"
            android:layout_width="126dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number" />

        <Spinner
            android:id="@+id/Garage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:entries="@array/Garages"
            android:prompt="@string/GaragePrompt" />

        <Spinner
            android:id="@+id/Floor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:entries="@array/Floors"
            android:prompt="@string/FloorPrompt" />

        <Spinner
            android:id="@+id/Spot"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:entries="@array/Spots"
            android:prompt="@string/SpotPrompt" />

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Date"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/Date"
            android:layout_width="122dp"
            android:layout_height="wrap_content"
            android:inputType="date" />

        <TextView
            android:id="@+id/textView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Time"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/Time"
            android:layout_width="122dp"
            android:layout_height="wrap_content"
            android:inputType="time" />

         <Button
             android:id="@+id/Reserve"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginLeft="21dp"
             android:text="Reserve" />

    </LinearLayout>
</ScrollView>

感谢您的帮助。

4

1 回答 1

1

以下是在 a 上填充不同值的一种方法,Spinner具体取决于另一个 的选择Spinner

在以下情况下,将随着微调器Spots的选择而改变值。Floor这是一种方法,但可能不是最好的方法......

声明为类变量...

private Spinner floor, spot;
private ArrayAdapter<String> floorAdapter, spotAdapter;

onCreate

floor = (Spinner) findViewById(R.id.Floor);
spot = (Spinner) findViewById(R.id.Spot);

// NOTE: 
// You can populate the lists below from a resource array as well using ArrayAdapter.createFromResource.

List<String> floor = new ArrayList<String>();
floor.add("spot 1");
floor.add("spot 2");

List<String> spot1 = new ArrayList<String>();
spot1.add("spot1 item 1");
spot1.add("spot1 item 2");
spot1.add("spot1 item 3");

List<String> spot2 = new ArrayList<String>();
spot2.add("spot2 item 1");
spot2.add("spot2 item 2");
spot2.add("spot2 item 3");

floorAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, floor);
floor.setAdapter(floorAdapter);
floor.setOnItemSelectedListener(this);

然后onItemSelectedfloor微调器上执行以下操作...

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    switch(position) {
    case 0:
        spotAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spot1);
        spot.setAdapter(spotAdapter);
        break;
    case 1:
        spotAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spot2);
        spot.setAdapter(spotAdapter);
        break;
    default:
        break;
}

正如我上面提到的,您也可以使用ArrayAdapter.createFromResource.

一切顺利。

于 2013-07-26T00:26:26.640 回答