赞
踩
的作者做的一个项目,通过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="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=".MainActivity">
-
- <TextView
- android: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" />
-
- <Spinner
- android: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>

码2 layout代码
三、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;
- @Override
- protected 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(){
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- spinnercontext=MainActivity.this.getResources().getStringArray(R.array.option)[position];
- textView.setText(spinnercontext);
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
- }
- }

码3 MainActivity.java代码
四、测试
测试结果如图4所示,当下拉列表框选中不同选项时,textview内容也会随之变化,说明用此方法可以获得下拉列表框选项的内容。
图4 测试结果图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。