Android Studio 下拉框Spinner實例

功能

下拉框相當常見了,例如選擇省、市、縣;例如選擇部門;選擇員工。用處一般是多選一。

顯示

下拉框一般有兩種形式,一種是下拉顯示可選項,一種是彈窗顯示可選項。通過調整參數spinnerMode,dropdown/dialog分別代表兩種下拉框。

注意下拉框的數據需要從資源中關聯過來,資源文件res/values/arrays.xml代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="gradeArray">
        <item>初一</item>
        <item>初二</item>
        <item>初三</item>
    </string-array>
</resources>

Android佈局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="4dp">

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/gradeArray"
        android:spinnerMode="dropdown"></Spinner>

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/gradeArray"
        android:spinnerMode="dialog"></Spinner>

    <Button
        android:id="@+id/buttonOk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="確認" />
</LinearLayout>

效果如下:
在這裏插入圖片描述
在這裏插入圖片描述

動態設置選項

可以利用數組適配器ArrayAdapter動態設置下來框的選項,佈局文件修改爲:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="4dp">
    <Spinner
        android:id="@+id/spinnerGrade"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"></Spinner>
    <Button
        android:id="@+id/buttonOk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="確認" />
</LinearLayout>

代碼部分修改爲:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Spinner spinnerGrade=findViewById(R.id.spinnerGrade);
        //內容數組
        String[] gradeArray={"初一","初二","初三","初四"};
        //數組適配器
        ArrayAdapter<String> gradeAdapter=new ArrayAdapter<>(this,R.layout.support_simple_spinner_dropdown_item,gradeArray);
        spinnerGrade.setAdapter(gradeAdapter);
        //設置默認選中項
        spinnerGrade.setSelection(0);
    }
}

獲取選中項

點擊確認後獲取選中項,並顯示選中項內容。

public class MainActivity extends AppCompatActivity {
    //內容數組
    String[] gradeArray={"初一","初二","初三","初四"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Spinner spinnerGrade=findViewById(R.id.spinnerGrade);
        //數組適配器
        ArrayAdapter<String> gradeAdapter=new ArrayAdapter<>(this,R.layout.support_simple_spinner_dropdown_item,gradeArray);
        spinnerGrade.setAdapter(gradeAdapter);
        //設置默認選中項
        spinnerGrade.setSelection(0);
        //獲取按鈕
        Button buttonOk = findViewById(R.id.buttonOk);
        //設置按鈕點擊監聽器
        buttonOk.setOnClickListener(new MyOnClickListener());
    }
    //定義按鈕點擊監聽器
    class MyOnClickListener implements View.OnClickListener {
        //按鈕點擊
        @Override
        public void onClick(View view) {
            if (view.getId() == R.id.buttonOk) {//被點擊的是確認按鈕
                //獲取選中項
                Spinner spinnerGrade=findViewById(R.id.spinnerGrade);
                //顯示提示框
                Toast.makeText(MainActivity.this, gradeArray[spinnerGrade.getSelectedItemPosition()] , Toast.LENGTH_SHORT).show();
            }
        }
    }
}

監聽下拉框選中項

當下拉框選中項發生改變時,彈窗顯示新項目,代碼如下:

public class MainActivity extends AppCompatActivity {
    //內容數組
    String[] gradeArray={"初一","初二","初三","初四"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Spinner spinnerGrade=findViewById(R.id.spinnerGrade);
        //數組適配器
        ArrayAdapter<String> gradeAdapter=new ArrayAdapter<>(this,R.layout.support_simple_spinner_dropdown_item,gradeArray);
        spinnerGrade.setAdapter(gradeAdapter);
        //設置默認選中項
        spinnerGrade.setSelection(0);
        //獲取按鈕
        Button buttonOk = findViewById(R.id.buttonOk);
        //設置按鈕點擊監聽器
        buttonOk.setOnClickListener(new MyOnClickListener());

        spinnerGrade.setOnItemSelectedListener(new MyOnItemSelectedListener());
    }

    //定義按鈕點擊監聽器
    class MyOnClickListener implements View.OnClickListener {
        //按鈕點擊
        @Override
        public void onClick(View view) {
            if (view.getId() == R.id.buttonOk) {//被點擊的是確認按鈕
                //獲取選中項
                Spinner spinnerGrade=findViewById(R.id.spinnerGrade);
                //顯示提示框
                Toast.makeText(MainActivity.this, gradeArray[spinnerGrade.getSelectedItemPosition()] , Toast.LENGTH_SHORT).show();
            }
        }
    }

    class MyOnItemSelectedListener implements AdapterView.OnItemSelectedListener {
        //選擇
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            Toast.makeText(MainActivity.this, gradeArray[i], Toast.LENGTH_SHORT).show();
        }
        //未選擇
        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章