iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
Mobile Development

android studio 30天初學筆記系列 第 12

Android Studio初學筆記-Day12-Spinner

  • 分享至 

  • xImage
  •  

Spinner選單

Spinner有快速選擇選單中項目的功能,是個很常用的選擇工具,不過spinner的撰寫有很多種方法,以下就簡單示範幾種實現的方法和效果。

介面

https://ithelp.ithome.com.tw/upload/images/20210907/20139136brapHzo40Q.png
Spinner的重點無疑是裡面的資料,那麼要怎麼將資料存入呢?

  • 可以將要存入的字串放在xml檔中,並直接透過字串的name引入就行嘞,可以在res/value的資料夾中新增一個xml檔來存資料。

程式碼

<resources>
    <string-array name="station">
        <item>南港</item>
        <item>台北</item>
        <item>板橋</item>
        <item>新竹</item>
        <item>苗栗</item>
        <item>台中</item>
        <item>彰化</item>
        <item>雲林</item>
        <item>嘉義</item>
        <item>台南</item>
        <item>左營</item>
    </string-array>
</resources>

有兩種將以上資料放入Spinner的方法。

  1. 直接透過設Spinner的屬性android:entries=""來引入,在括號內數入陣列的名稱,如在這裡的寫法則是android:entries="@array/station"。
  2. 透過ArrayAdapter來將字串倒入,這個方法比前一種方法複雜,不過可以自己定義Spinner的樣式。

程式碼

public class MainActivity extends AppCompatActivity {
    Boolean firstTime=true;
    Spinner sp1,sp2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sp1 = (Spinner)findViewById(R.id.spinner);
        sp2 = (Spinner)findViewById(R.id.spinner2);
        ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this
                ,R.array.station,android.R.layout.simple_dropdown_item_1line);
        sp1.setAdapter(adapter1);
        sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
            {
                if (firstTime){
                    firstTime = false;
                    //沒有這個的話Toast會打印一次還沒選擇的狀態
                }
                else{ 
                    Toast.makeText(view.getContext(),parent.getSelectedItem().toString(),
                                        Toast.LENGTH_SHORT).show();
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                            //沒選擇項目的話,要做的事寫在這。
            }
        });
    }
    public void order(View v){
        String [] station =getResources().getStringArray(R.array.station);
        int start = sp1.getSelectedItemPosition();
        int end = sp2.getSelectedItemPosition();
        Toast.makeText(this,"起點:"+station[start]+"終點:"+station[end],Toast.LENGTH_SHORT)
        .show();
    }
}

可以分別在onItemSelected()和onNothingSelected()內設計選擇時和沒選擇時的功能。

成果

https://ithelp.ithome.com.tw/upload/images/20210907/20139136GFJJX9mhHE.png

Spinner就講到這邊,謝謝大家!/images/emoticon/emoticon41.gif


上一篇
Android Studio初學筆記-Day11-Checkbox
下一篇
Android Studio初學筆記-Day13-ScrollView
系列文
android studio 30天初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言