Spinner 二级联动
import java.util.List;
public class YingJiShiJianLeiXingBean {
private String eventtype;
private List<DescribeBean> list_desBeans;
public String getEventtype() {
return eventtype;
}
public void setEventtype(String eventtype) {
this.eventtype = eventtype;
}
public List<DescribeBean> getList_desBeans() {
return list_desBeans;
}
public void setList_desBeans(List<DescribeBean> list_desBeans) {
this.list_desBeans = list_desBeans;
}
}
实体类2
public class DescribeBean {
private String name;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
主要类:
package com.cdc.liandong;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.androidquery.AQuery;
import com.androidquery.callback.AjaxCallback;
import com.androidquery.callback.AjaxStatus;
import com.cdc.bean.DescribeBean;
import com.cdc.bean.YingJiShiJianLeiXingBean;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity {
/** 应急事件类型大类型 **/
private List<String> list_yingList = new ArrayList<String>();
/** 应急事件类型第一个详细类型 (默认的类型) ***/
private List<String> list_first = new ArrayList<String>();
/** 应急事件类型二级详细类型--文字 ***/
private List<List<String>> list_detail = new ArrayList<List<String>>();
/** 应急事件类型二级详细类型--id ***/
private List<List<String>> list_detail_ids = new ArrayList<List<String>>();
/***记录事件类型二级分类中集合的位置--在二级分类的id中调用**/
private int pos;
private String path = "http://192.168.0.115:8080/应急事件类型全数据.txt";
/*** 事件类型一级分类 **/
private Spinner sp_shijianleixing_yiji;
/*** 事件类型二级分类 **/
private Spinner sp_shijianleixing_erji;
/***保存应急级别的实体类***/
private List<YingJiShiJianLeiXingBean> list = new ArrayList<YingJiShiJianLeiXingBean>();
/***事件类型的一级适配器***/
private ArrayAdapter<String> adapter_shijianleixing_yiji;
/***事件类型的二级适配器***/
private ArrayAdapter<String> adapte_shijianleixing_erji;
private AQuery aq;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aq = new AQuery(this);
aq.ajax(path, String.class, new AjaxCallback<String>() {
@Override
public void callback(String url, String object, AjaxStatus status) {
// TODO Auto-generated method stub
// System.out.println(object);
if (object != null
&& object.startsWith("\ufeff")) {
object = object.substring(1);
}
if (object != null && object.length() > 0) {
try {
JSONArray jsonArray = new JSONArray(object);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
YingJiShiJianLeiXingBean yingJiShiJianLeiXingBean = new YingJiShiJianLeiXingBean();
String typeString = jsonObject
.optString("eventtype");
JSONArray jsonArray2 = jsonObject
.optJSONArray("describe");
List<DescribeBean> list_desBeans = new ArrayList<DescribeBean>();
for (int j = 0; j < jsonArray2.length(); j++) {
DescribeBean describeBean = new DescribeBean();
JSONObject jsonObject2 = jsonArray2
.getJSONObject(j);
String nameString = jsonObject2
.optString("name");
String idString = jsonObject2.optString("id");
describeBean.setId(idString);
describeBean.setName(nameString);
list_desBeans.add(describeBean);
}
yingJiShiJianLeiXingBean.setEventtype(typeString);
yingJiShiJianLeiXingBean
.setList_desBeans(list_desBeans);
list.add(yingJiShiJianLeiXingBean);
}
getData(list);
adapter_shijianleixing_yiji = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,
list_yingList);
adapter_shijianleixing_yiji.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp_shijianleixing_yiji = (Spinner) findViewById(R.id.shijianleixing_yiji);
sp_shijianleixing_erji = (Spinner) findViewById(R.id.shijianleixing_erji);
sp_shijianleixing_yiji.setAdapter(adapter_shijianleixing_yiji);
adapte_shijianleixing_erji = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,
list_first);
adapte_shijianleixing_erji.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp_shijianleixing_erji.setAdapter(adapte_shijianleixing_erji);
sp_shijianleixing_yiji.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0,
View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
pos = sp_shijianleixing_yiji.getSelectedItemPosition();
adapte_shijianleixing_erji = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,list_detail.get(pos));
adapte_shijianleixing_erji.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
System.out.println("pos=="+pos+","+list_detail.get(pos).size());
sp_shijianleixing_erji.setAdapter(adapte_shijianleixing_erji);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
sp_shijianleixing_erji.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0,
View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
System.out.println("选择的事件类型是="+sp_shijianleixing_erji.getItemAtPosition(arg2).toString()+",对应的id为:"+list_detail_ids.get(pos).get(arg2));
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
Toast.makeText(getApplicationContext(), "网络错误,请稍后重试!",
Toast.LENGTH_SHORT).show();
}
}
});
}
public void getData(List<YingJiShiJianLeiXingBean> list) {
int a = list.get(0).getList_desBeans().size();
for (int i = 0; i < list.size(); i++) {
YingJiShiJianLeiXingBean yBean = (YingJiShiJianLeiXingBean) list
.get(i);
String tString = yBean.getEventtype();
list_yingList.add(tString);
List<DescribeBean> describeBeans = yBean.getList_desBeans();
List<String> list_names=new ArrayList<String>();
List<String> list_ids=new ArrayList<String>();
for (int j = 0; j < describeBeans.size(); j++) {
list_names.add(describeBeans.get(j).getName());
list_ids.add(describeBeans.get(j).getId());
}
list_detail.add(list_names);
list_detail_ids.add(list_ids);
}
List<DescribeBean> llBeans = list.get(0).getList_desBeans();
for (int j = 0; j < llBeans.size(); j++) {
list_first.add(llBeans.get(j).getName());
}
}
}
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF" >
<TextView
android:id="@+id/ems_shijianleixing_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/shijianleixing_yiji"
android:layout_marginTop="7px"
android:text="*事件类型:" />
<Spinner
android:id="@+id/shijianleixing_yiji"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="7px"
android:layout_toRightOf="@id/ems_shijianleixing_tv"
android:drawSelectorOnTop="true" />
<Spinner
android:id="@+id/shijianleixing_erji"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/shijianleixing_yiji"
android:layout_marginTop="7px"
android:layout_toRightOf="@id/ems_shijianleixing_tv"
android:drawSelectorOnTop="true" />
</RelativeLayout>
应急事件类型全数据.txt
[{"eventtype":"类1","describe":[{"name":"演练11","id":0}]},
{"eventtype":"类2","describe":[{"name":"演练21","id":1},{"name":"演练22","id":2},{"name":"演练23","id":3},{"name":"演练24","id":4},{"name":"演练25","id":7}]},
{"eventtype":"类3","describe":[{"name":"演练31","id":32}]},
{"eventtype":"类4","describe":[{"name":"演练41","id":33},{"name":"演练42","id":34},
{"name":"演练43","id":35},{"name":"演练44","id":36}]},
{"eventtype":"类5","describe":[{"name":"演练51","id":64}]}
]