所以我一直在努力让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>
感谢您的帮助。
答案 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
从数组中加载列表。
一切顺利。