Android 中使用spinner实现下拉列表的两种方法和getItemAtPosition()方法的使用

简介: Android 中使用spinner实现下拉列表的两种方法和getItemAtPosition()方法的使用

方法一:

通过entries属性,指定列表项

1.main.xml文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<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=".SpinnerActivity"
    android:orientation="horizontal"
    >
    <TextView
        android:layout_width="150dp"
        android:layout_height="50dp"
        android:text="附近区域:"
        android:textSize="25sp"
        android:gravity="right|center"
        />
    <Spinner
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:id="@+id/spinner_location"
        android:entries="@array/spinner"
        />
</LinearLayout>

2.资源文件@array/spinner 需要在values文件下面创建,具体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="spinner">
        <item>全部</item>
        <item>上海</item>
        <item>天津</item>
        <item>深圳</item>
    </string-array>
</resources>

效果如下:

方法二:

使用数组适配器ArrayAdapter,展现列表项

public class SpinnerActivity extends AppCompatActivity {
    private Spinner spinner_location;
    private ArrayAdapter arrayAdapter;
    //定义字符串数组,指定数组的元素
    private String[] spinner = new String[]{"全部","上海","深圳","北京"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner);
        spinner_location=findViewById(R.id.spinner_location);
        //参数1.上下文对象 参数2.列表项的样式,Android为我们提供的资源样式为:android.R.layout.simple_spinner_item
        //参数3.定义的字符串数组
        arrayAdapter=new ArrayAdapter(this, android.R.layout.simple_spinner_item,spinner);
        //设置适配器列表框下拉时的列表样式
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //将适配器与下拉列表框关联起来
        spinner_location.setAdapter(arrayAdapter);
        String s = spinner_location.getSelectedItem().toString();
        Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
    }
}

效果同上。

获取选中项的值,通过调用选择列表项监听器setOnItemSelectedListener

使用其中的getItemAtPosition 获取选中的值

spinner_location.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String result = parent.getItemAtPosition(position).toString();
                Toast.makeText(SpinnerActivity.this, result, Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

效果如下:

Spinner中常用的属性:

【 常 用 属 性 】
1.      android:entries="@array/menu_type"  //  绑定XML文件找那个的数据源
2.    android:spinnerMode="dropdown"    //  显示模式 
    "dropdown"  直接下拉模式
    "dialog"  对话框效果模式
4.      android:dropDownWidth="250dp"   //  下拉框宽度


目录
相关文章
|
3月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
61 0
|
8月前
|
Android开发
Android RecyclerView的notify方法和动画的刷新详解(二)
Android RecyclerView的notify方法和动画的刷新详解
143 0
|
25天前
|
Android开发
Android调用相机与相册的方法2
Android调用相机与相册的方法
18 0
|
3月前
|
安全 Java 数据安全/隐私保护
Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现
Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现
74 0
|
8月前
|
Android开发
Android LayoutInflater.from(context).inflate()方法的作用
Android LayoutInflater.from(context).inflate()方法的作用
48 0
|
8月前
|
XML Java Android开发
Android 中ScrollView垂直滚动视图之隐藏滚动条的三种方法
Android 中ScrollView垂直滚动视图之隐藏滚动条的三种方法
92 0
|
4月前
|
XML JSON Android开发
[Android]使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换
[Android]使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换
54 0
|
4月前
|
XML Java Android开发
Android Studio App自定义控件中视图的构造和测量方法讲解及实战(附源码 实现下拉刷新功能 超详细必看)
Android Studio App自定义控件中视图的构造和测量方法讲解及实战(附源码 实现下拉刷新功能 超详细必看)
42 1
|
4月前
|
XML Java Android开发
Android Studio App开发中高级控件下拉列表Spinner的讲解及实战(附源码 超详细必看)
Android Studio App开发中高级控件下拉列表Spinner的讲解及实战(附源码 超详细必看)
72 0
|
5月前
|
Android开发
[√]Android 通过adb内存监测方法
[√]Android 通过adb内存监测方法
143 1