Java安卓开发 Spinner 快速教程 附Demo

继承关系

java.lang.Object

android.view.View

        android.view.ViewGroup

                android.widget.AdapterView<T extends android.widget.Adapter>

                        android.widget.AbsSpinner

                                android.widget.Spinner

AdapterView的特征:只要为AdapterView提供Adapter即可。

静态添加项目

values文件夹下新建array.xml文件(也可以直接在stings.xml文件里插入节点)
string-array节点和item节点

<resources>  
    <string-array name="spinnerclass">  
        <item>C++</item>  
        <item>C#</item>  
        <item>java</item>  
        <item>python</item>  
    </string-array></resources>

layout布局文件里:
array资源文件里的spinnerclass类
'@array’表示array类型的节点,spinnerclass表示节点名字

android:entries="@array/spinnerclass"

databinding

不需要使用adapater来绑定视图和数据,用ObservableArrayList<T>来存储元素,增删操作只需要在ObservableArrayList中进行就可以。

<variable  
    name="item_list"  
    type="androidx.databinding.ObservableArrayList&lt;String&gt;" />

<Spinner  
    android:entries="@{item_list}"   />

动态添加项目

//Cautions: has to use ArrayList as data source to perform add and remove operation
//数据源,ArrayList可以修改
String[] mitems = getResources().getStringArray(R.array.spinnerclass);
ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(mitems));  
//adapter 
//三个参数:context, item的布局文件, 数据源
ArrayAdapter<String> adapter = new ArrayAdapter<String>(  
        this,  
        androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,  
        arrayList);  
spinner.setAdapter(adapter);

增删元素可以通过adapter来操作(内部的ArrayList提供了增删的方法)

adapter.remove("C");
adapter.add("C++");

常用方法

String item_selected = spinner.getSelectedItem().toString();
String selectedItem = (String) parent.getItemAtPosition(position)

练习Demo

在这里插入图片描述

activity文件

package com.example.javalearningexamples.uiTest;  
  
import android.os.Bundle;  
import android.view.View;  
import android.widget.ArrayAdapter;  
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.Spinner;  
  
import androidx.activity.EdgeToEdge;  
import androidx.appcompat.app.AppCompatActivity;  
import androidx.core.graphics.Insets;  
import androidx.core.view.ViewCompat;  
import androidx.core.view.WindowInsetsCompat;  
  
import com.example.javalearningexamples.R;  
  
import java.util
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值