文章目录
继承关系
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<String>" />
<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