Android-----spinner組件使用(實現下單)
阿新 • • 發佈:2019-05-13
圖片 @+ vertical imp 方法 內容 sim eat alt
list view組件和spinner組件使用方法類似,從string.xml中通過entries獲取數據顯示。但如果要顯示的列表項無法在執行前確定,或是要在程序執行的過程中變更選項內容,通過entries獲取數據就行不通了。
在這裏需要用到ArrayAdapter。ArrayAdapter對象會從指定的數據源中取出每一項數據,再提供給spinner組件來顯示。
我在這裏舉個栗子:比如我們平常買奶茶,有些是可以常溫,但是有些只有加冰或去冰。
布局文件代碼如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="vertical" 8 tools:context="com.hs.example.exampleapplication.SpinnerActivity"> 9 10 <Spinner 11 android:id="@+id/drink" 12 android:layout_width="match_parent" 13 android:layout_height="wrap_content"> 14 15 </Spinner> 16 17 <Spinner 18 android:id="@+id/temp" 19 android:layout_width="match_parent" 20 android:layout_height="wrap_content"> 21 22 23 </Spinner> 24 25 <Button 26 android:gravity="center" 27 android:layout_width="match_parent" 28 android:layout_height="wrap_content" 29 android:onClick="ShowOrder" 30 android:text="下訂單"/> 31 32 <TextView 33 android:id="@+id/Text_order" 34 android:layout_width="match_parent" 35 android:layout_height="match_parent" 36 android:text=""/> 37 38 </LinearLayout>
邏輯代碼如下:
1 public class SpinnerActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{ 2 3 Spinner drink , temp; 4 TextView order; 5 String [] drinks = {"珍珠奶茶","波霸奶茶","絲襪奶茶","金桔檸檬"}; 6 String [] tempSele1 = {"加冰","去冰","常溫"}; 7 String [] tempSele2 = {"加冰","去冰"}; 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_spinner); 13 14 drink = this.findViewById(R.id.drink); 15 //創建array adapter對象 選單未打開時的樣式 飲品選項 16 ArrayAdapter<String> drinkAd = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,drinks); 17 drinkAd.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//設置下拉選單的樣式 18 drink.setAdapter(drinkAd); //設置adapter對象 19 drink.setOnItemSelectedListener(this); 20 21 temp = this.findViewById(R.id.temp); 22 order = this.findViewById(R.id.Text_order); 23 24 25 } 26 27 @Override 28 public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 29 String [] tempSet; 30 if(i == 3){ //購買金桔檸檬時,沒有常溫選項 31 tempSet = tempSele2; 32 }else{ 33 tempSet = tempSele1; 34 } 35 ArrayAdapter<String> tempAd = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,tempSet); 36 tempAd.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 37 temp.setAdapter(tempAd); 38 } 39 40 @Override 41 public void onNothingSelected(AdapterView<?> adapterView) { 42 43 } 44 45 public void ShowOrder(View view){ 46 String msg = drink.getSelectedItem() + "|" + temp.getSelectedItem(); 47 order.setText(msg); 48 } 49 }
運行效果如下:
Android-----spinner組件使用(實現下單)