安卓四级级联下拉框效果实现
突然想起来,安卓这块的随笔荒废好久了……T^T
今天因为大创的任务的要求,需要实现四级级联的下拉框的效果,所以趁着这个机会利用spinner实现了级联下拉框的效果,以下是效果图。
话不多说,上代码了,首先是activity_main.xml,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp" >
<Spinner
android:id="@+id/spin_institue"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/spin_grade"
android:layout_width="100dp"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/spin_prof"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/spin_class"
android:layout_width="100dp"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="上传"
android:id="@+id/up_btn"/>
</LinearLayout>activity_main.xml
然后是对应的MainActivity.java
package com.example.tryy;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
private Spinner insspinner=null;
private Spinner graspinner=null;
private Spinner prospinner=null;
private Spinner claspinner=null;
private Button up_btn=null;
ArrayAdapter<String> insAdapter = null;
ArrayAdapter<String> graAdapter = null;
ArrayAdapter<String> proAdapter = null;
ArrayAdapter<String> claAdapter=null;
static int insPosition = 0;
static int graPosition=0;
static int proPosition=0;
static int claPosition=0;
private String upload_str;
HashMap<String, String> hm = new HashMap<String, String>();
private String[] ins = new String[] {"计算机科学与技术学院"};
private String[][] gra=new String[][]{
{"16","17","18","19"}
};
private String[][][] prof=new String[][][]{
{{"计算机科学与技术","电子信息科学与技术","信息安全","网络工程"},
{"计算机科学与技术","电子信息科学与技术","信息安全"},
{"计算机科学与技术","电子信息科学与技术","信息安全","数据科学与大数据技术专业"},
{"计算机类"}}
};
private String[][][][] cla=new String[][][][]{
{
{{"01","02","03","04","05","06","07"}, {"01","02","03","04"},{"01","02","03","04"},{"01"}},
{{"01","02","03","04","05","06"}, {"01","02","03","04"},{"01","02","03","04"}},
{{"01","02","03","04"}, {"01","02","03","04"},{"01","02","03","04"},{"01","02"}},
{{"01","02","03","04","05","06","07","08","09","10","11","12","13"}}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hm.put("计算机类", "0801");
hm.put("计算机科学与技术", "0810");
hm.put("电子信息科学与技术", "0820");
hm.put("网络工程", "0830");
hm.put("信息安全", "0840");
hm.put("数据科学与大数据技术专业", "0850");
up_btn=findViewById(R.id.up_btn);
up_btn.setOnClickListener(new Buttonlistener());
setSpinner();
}
private class Buttonlistener implements View.OnClickListener {
public void onClick(View v) {
switch (v.getId()) {
case R.id.up_btn:
//***************************************************************************
//这里写上传的代码,上传图片与识别码,识别码就是upload_str,它的构成为GGPPPPCC,GG年级,PPPP专业号,CC班级号,比如 17081004 代表17级计算机科学与技术4班
Toast.makeText(MainActivity.this,upload_str,Toast.LENGTH_SHORT ).show();
break;
default:
break;
}
}
}
private void setSpinner(){
insspinner=findViewById(R.id.spin_institue);
graspinner=findViewById(R.id.spin_grade);
prospinner=findViewById(R.id.spin_prof);
claspinner=findViewById(R.id.spin_class);
insAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, ins);
insspinner.setAdapter(insAdapter);
insspinner.setSelection(0,true);
graAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, gra[0]);
graspinner.setAdapter(graAdapter);
graspinner.setSelection(0,true);
proAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, prof[0][0]);
prospinner.setAdapter(proAdapter);
prospinner.setSelection(0,true);
claAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, cla[0][0][0]);
claspinner.setAdapter(claAdapter);
claspinner.setSelection(0,true);
insspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
// 表示选项被改变的时候触发此方法,主要实现办法:动态改变地级适配器的绑定值
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3)
{
//position为当前省级选中的值的序号
//将地级适配器的值改变为city[position]中的值
graAdapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_spinner_item, gra[position]);
// 设置二级下拉列表的选项内容适配器
graspinner.setAdapter(graAdapter);
insPosition = position; //记录当前省级序号,留给下面修改县级适配器时用
}
@Override
public void onNothingSelected(AdapterView<?> arg0)
{
}});
//地级下拉监听
graspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3)
{
proAdapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,prof[insPosition][position]);
prospinner.setAdapter(proAdapter);
graPosition=position;
}
@Override
public void onNothingSelected(AdapterView<?> arg0)
{
}});
prospinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3)
{
claAdapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item, cla[insPosition][graPosition][position]);
claspinner.setAdapter(claAdapter);
proPosition=position;
}
@Override
public void onNothingSelected(AdapterView<?> arg0)
{
}});
claspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg3)
{
claPosition=position;
String str=ins[insPosition]+gra[insPosition][graPosition]+prof[insPosition][graPosition][proPosition]+cla[insPosition][graPosition][proPosition][claPosition];
upload_str=gra[insPosition][graPosition]+hm.get(prof[insPosition][graPosition][proPosition])+cla[insPosition][graPosition][proPosition][claPosition];
Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT ).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0)
{
}});
}
}MainActivity.java
