Android Studio初学笔记-Day12-Spinner

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


<<:  【Day16】[资料结构]-二元搜寻树Binary Search Tree-实作

>>:  Day12 - 修改 Rails Routes 实作关键字回覆

# Day21--Git标准姿势?基本动作?

在接下来几篇的文章中,大概会提到所谓的Git,後来听许多前辈说,Git是工程师非常加分的条件,虽然自...

聊天软件上的 WebRTC

为什麽要用 WebRTC 我们的 App 是聊天软件,一开始只有文字对话,那时用 socket.io...

Day 21 例外及堆叠的处理方式

大部分的处理器都有以下四种例外的类型,优先权由高至低排列: 1.非同步不可遮罩 2.同步精确 3.同...

开机自启动 Seafile

对于运行 systemd 的系统 创建 systemd 服务管理文件,将以下示例中 ${seafil...

Day27 - 在 Next.js 如何正确地使用 dynamic import

前言 在 Next.js 有一个很棒的优点是在 /pages 中的页面预设 next build 时...