的作者做的一个项目,通过app来监测设备是否在线状态,这时就需要实现分别查询“在线”、“离线”、“全部”三种选项的设备情况。也就是要能实现根据在线与否的状态来对设备进行筛选。
要对数据表中数据进行筛选,经常用到下拉列表框来设定选项,当点选不同选项时,根据选中内容进行筛选。要想完成此项目的,首先要做的就是,当点选下拉列表框中选项时,如何获得选项的内容?下边做一简单介绍。
一、下拉列表框选项字段数组设计
选项数组放在res/values/arrays.xml中,目录如图1所示,代码如码1所示,数组名称为“option”,有“在线”、“离线”、“全部”三个选项。
图1 下拉列表框选项数组放置目录
<?xml version="1.0" encoding="utf-8"?><resources><string-array name="option"><item>全部</item><item>在线</item><item>离线</item></string-array></resources>
码1 下拉列表框选项数组代码
二、主界面设计
为了测试,当点选下拉列表框某个选项时,是否获得该选项的内容。在主界面上除了设计一个下拉列表框之外,还设计了一个textview,用来显示点选下拉列表框之后获得的内容。在android studio中,下拉列表框的名字是Spinner,如图2所示。
图2 下拉列表框名称
主界面设计如图3所示。
图3 主界面
layout代码如码2所示,注意Spinner的属性设置里,有一条语句:
android:entries="@array/option",
此句是把option数组与下拉列表框进行了关联,下拉列表框显示的内容即为数组内容。
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="80dp"android:text="获取内容"app:layout_constraintHorizontal_bias="0.562"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Spinnerandroid:id="@+id/spinner"style="@style/Widget.AppCompat.Spinner.Underlined"android:layout_width="wrap_content"android:layout_height="50dp"android:layout_weight="0.6"android:entries="@array/option"tools:ignore="MissingConstraints"tools:layout_editor_absoluteX="61dp"tools:layout_editor_absoluteY="80dp"></Spinner></androidx.constraintlayout.widget.ConstraintLayout>
码2layout代码
三、java代码
MainActivity.java代码如码3所示,其中
spinner.setOnItemSelectedListener
为下拉列表框点选选项时的监听。
MainActivity.this.getResources().getStringArray(R.array.option)[position]
为获取下拉列表框点选项对应的option数组内容。
package com.example.myspinner;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.Spinner;import android.widget.TextView;public class MainActivity extends AppCompatActivity {TextView textView;Spinner spinner;String spinnercontext;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.text);spinner=(Spinner)findViewById(R.id.spinner);spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {spinnercontext=MainActivity.this.getResources().getStringArray(R.array.option)[position];textView.setText(spinnercontext);}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}});}}
码3MainActivity.java代码
四、测试
测试结果如图4所示,当下拉列表框选中不同选项时,textview内容也会随之变化,说明用此方法可以获得下拉列表框选项的内容。
图4 测试结果图