Android Spinner特定列表

时间:2013-07-25 23:36:47

标签: android

所以我一直在努力让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>

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

以下是根据另一个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);

然后在onItemSelected微调器的floor上执行以下操作...

@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从数组中加载列表。

一切顺利。