当前位置:   article > 正文

Android学习之下拉列表_android下拉菜单栏学习

android下拉菜单栏学习

下拉列表

在Android中,官方为我们提供了用来实现下拉列表的组件Spinner,我们使用这个组件就可以完成下拉列表的创建。

下拉列表的两种实现方式

静态创建就是在布局文件中使用 android:entries属性指定下拉列表数据的存放文件,这样就不需要在代码中进行任何操作,即可创建下拉列表。

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

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/spinner1"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="分割"/>

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

</LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

spinner1.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="spinner">
        <item>北京</item>
        <item>上海</item>
        <item>深圳</item>
    </string-array>

</resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

动态创建就是在代码中指定下拉列表的数据。data_list是存放数据的列表。

/**
     * 动态创建下拉列表
     */
    public void createSpinner2() {
        spinner = findViewById(R.id.spinner2);

        data_list = new ArrayList<>();
        data_list.add("北京");
        data_list.add("上海");
        data_list.add("广州");
        data_list.add("深圳");

        //适配器
        arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,data_list);
        //设置样式
        arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        //加载适配器
        spinner.setAdapter(arr_adapter);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

使用下拉列表实现多级联动

多级联动实现的要点在于选择了第一级以后,需要自动在第二级设置出对应的数据。
在布局文件中添加以下代码

 <TextView
        android:id="@+id/spinner3"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="以下是三级联动"/>

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

    <Spinner
        android:id="@+id/spinner5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
    /**
     * 二级联动
     */
    public void createSpinner3() {
        spinner4 = findViewById(R.id.spinner4);
        spinner5 = findViewById(R.id.spinner5);


        ArrayList<String> data4 = new ArrayList<>();
        data4.add("北京");
        data4.add("上海");
        data4.add("深圳");
		
		//设置第一级的数据
        adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,data4);
        adapter4.setDropDownViewResource(android.R.layout.simple_spinner_item);
        spinner4.setAdapter(adapter4);

		//给第一级设置选项选中事件
        spinner4.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Log.d(TAG, "onItemClick: " + adapter4.getItem(position));
                Log.d(TAG, "onItemClick: " + data4.get(position));
               //判断被选中的是第一级的哪个数据,然后设置对应的数据
                if ("北京".equals(data4.get(position))) {
                	//将数据绑定到选中的选项上
                    adapter5 = ArrayAdapter.createFromResource(TestActivity2.this, R.array.bj, android.R.layout.simple_spinner_item);
                    spinner5.setAdapter(adapter5);
                } else if ("上海".equals(data4.get(position))) {
                    adapter5 = ArrayAdapter.createFromResource(TestActivity2.this, R.array.sh, android.R.layout.simple_spinner_item);
                    spinner5.setAdapter(adapter5);
                } else {
                    adapter5 = ArrayAdapter.createFromResource(TestActivity2.this, R.array.sz, android.R.layout.simple_spinner_item);
                    spinner5.setAdapter(adapter5);
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

sz.xml文件,此文件在values目录下创建。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="sz">
        <item>南山区</item>
        <item>龙岗区</item>
        <item>福田区</item>
    </string-array>
</resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

bj.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="bj">
        <item>大兴区</item>
        <item>怀柔区</item>
        <item>通州区</item>
    </string-array>
</resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

sh.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="sh">
        <item>奉贤区</item>
        <item>黄埔区</item>
        <item>青浦区</item>
    </string-array>
</resources>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

参考

  1. Android之单复选框及Spinner实现二级联动
  2. Android:控件Spinner实现下拉列表
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/111536
推荐阅读
相关标签
  

闽ICP备14008679号