iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
Mobile Development

Android Studio 學習交流系列 第 12

[Day12]Android學習-元件介紹-Spinner

  • 分享至 

  • xImage
  •  

前兩篇介紹ListView和GridView元件,而這篇再介紹ListView和GridView的好朋友Spinner。Spinner在app常見於填寫資料,由於有選擇的特性能幫助使用者將資料快速填寫完畢。

Spinner

Spinner在spinner選單裡每一格由一個view組成,view裡有元件或物件(字串)。

Spinner-UI程式設計

相信大家看到第十二篇,底下的程式應該易如反掌,那我們飛過去吧!

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

GridView-Java程式設計

Spinner使用的偵聽方式是setOnItemSelectedListener選擇選項,因此,特別介紹OnItemSelectedListener()要覆寫的方法。

    private void setAdapter(){
        ArrayAdapter <String> adapter=
        new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,fruit_name);
        adapter.setDropDownViewResource(android.R.layout.simple_list_item_activated_1);
        spinner.setAdapter(adapter);
    }
  • adapter.setDropDownViewResource
    提供選單的樣式
  • simple_list_item_activated_1
    點選後,選單會改變背景顏色
    private void setListener() {

        spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
            @Override
            
           public void onItemSelected
           (AdapterView<?> adapterView, View view, int position, long l) {
                String msg = adapterView.getItemAtPosition(position).toString();
                setToast(msg);
            }
            
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
  • onItemSelected與onNothingSelected=>白話的意思是選擇選項與沒有選擇選項所要執行的方法

完整程式碼

public class MainActivity extends AppCompatActivity {
    private Spinner spinner;
    private String[] fruit_name=new String[]{"Apple","Banana","Orange","Grape","Strawberry"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViews();
        setAdapter();
        setListener();
    }
        
    private void setAdapter(){
        ArrayAdapter <String> adapter=
        new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,fruit_name);
        adapter.setDropDownViewResource(android.R.layout.simple_list_item_activated_1);
        spinner.setAdapter(adapter);
    }
    
    private void findViews () {
          spinner=(Spinner)findViewById(R.id.spinner);
     }

     private void setToast (String text){
          Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
     }

    private void setListener() {

        spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
            @Override
            
           public void onItemSelected
           (AdapterView<?> adapterView, View view, int position, long l) {
                String msg = adapterView.getItemAtPosition(position).toString();
                setToast(msg);
            }
            
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
    }
    }

實作

https://ithelp.ithome.com.tw/upload/images/20190925/20121149thECF5InjW.png

https://ithelp.ithome.com.tw/upload/images/20190925/20121149FYhZWenXRW.png

https://ithelp.ithome.com.tw/upload/images/20190925/20121149iJIJUpKT3P.png
若文章有誤,歡迎大家提出建議。

Thank you for your time.

/images/emoticon/emoticon13.gif


上一篇
[Day11]Android學習-元件介紹-GridView
下一篇
[Day13]Android學習-我的清單好朋友與baseAdapter類別
系列文
Android Studio 學習交流30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言