iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0

今天要來介紹Spinner,開始ㄅ(•̀ω•́)
今天是教師節,祝各位教師們教師節快樂:)

Spinner是什麼 .w.?

Spinner 是一個下拉式選單元件,讓使用者能從多個選項中選擇其一。在預設狀態下,Spinner 會顯示目前選中的項目;當使用者點擊時,會彈出一個所有選項的列表供使用者選擇

在XML中定義 Spinner

屬性 說明
android:entries 靜態載入選項。需要指向一個在 res/values/ 中定義的字串陣列
android:prompt 設定下拉選單彈出時,在對話框頂部顯示的標題
android:spinnerMode 下拉選單的顯示方式,可選 dialog(對話框)或 dropdown(下拉式)預設值為 dropdown

在Java中處理Spinner

要處理使用者在 Spinner 上的選擇事件,你需要設定一個AdapterView.OnItemSelectedListener監聽器,有兩個實作:

  1. onItemSelected(AdapterView<?> parent, View view, int position, long id)
    • 觸發時機:當使用者從下拉選單中選擇了任何一個項目
    • 參數說明
      • parent:觸發此事件的AdapterView
      • view:被選中項目所對應的視圖
      • position:被選中項目在資料來源中的索引值
      • id:被選中項目
  2. onNothingSelected(AdapterView<?> parent)
    • 觸發時機:當Spinner沒被選取

範例:

activity_main.xml

<Spinner
        android:id="@+id/dialog_main_spi"
        android:layout_width="??dp"
        android:layout_height="??dp"  
        android:spinnerMode="dialog"/>
        <!-- 動動小手設計.w.-->
<Spinner
        android:id="@+id/dropdown_main_spi"
        android:layout_width="??dp"
        android:layout_height="??dp"
        android:spinnerMode="dropdown"/>

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private Spinner dialogSpinner, dropdownSpinner;

    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dialogSpinner = findViewById(R.id.dialog_main_spi);
        dropdownSpinner = findViewById(R.id.dropdown_main_spi);
        
        final String[] dialogItem = {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"};
        final String[] dropdownItem = {"Item A", "Item B", "Item C", "Item D", "Item E"};
        
        ArrayAdapter<String> dialogList = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_item, dialogItem);
        dialogSpinner.setAdapter(dialogList);
        dialogList.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
        dialogSpinner.setSelection(0);
        dialogSpinner.setPrompt("請選擇");

        dialogSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> dialogAdapter, View view, int dialog_Position, long dialog_Item) {
                Toast.makeText(MainActivity.this, "你選擇:" + dialogSpinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> dialogAdapter) {
            }
        });

        ArrayAdapter<String> dropdownList = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_spinner_item, dropdownItem);
        dropdownSpinner.setAdapter(dropdownList);
        dropdownList.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
        dropdownSpinner.setSelection(0);
        
        dropdownSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> dropdownAdapter, View view, int dropdown_Position, long dropdown_Item) {
                Toast.makeText(MainActivity.this, "你選擇:" + dropdownSpinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> dropdownAdapter) {
            }
        });
    }
}

Spinner就先介紹到這,明天會來介紹ImageView,明天見( ˙▿˙ )/

https://ithelp.ithome.com.tw/upload/images/20250928/20176154p99I1y3Fb5.png


上一篇
Day13 Intent介紹
下一篇
Day15 ImageView介紹
系列文
Android 菜鳥30天從0到1的學習紀錄15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言