1.效果图:
2.XML文件
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<Spinner android:id="@+id/spprovince" android:layout_width="100dip"
android:layout_height="wrap_content"
>
</Spinner>
<Spinner android:id="@+id/spcity" android:layout_width="100dip"
android:layout_height="wrap_content">
</Spinner>
<Spinner android:id="@+id/sparea" android:layout_width="100dip"
android:layout_height="wrap_content">
</Spinner>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvShowRes"
android:layout_marginTop="5dp"/>
</LinearLayout>
3.数据库表结构
CREATE TABLE ProvinceCityZone (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
parentID INT UNSIGNED,
areaName TEXT,
zipCode TEXT
)
4.获取数据方法
public class ProvinceCityZoneDao {
private DBHelper dbHelper = null;
private SQLiteDatabase db = null;
/*ProvinceCityZone 为实体*/
public String[] PCZColumns = {
DBInfo.ProvinceCityZone._id,
DBInfo.ProvinceCityZone.areaName,
DBInfo.ProvinceCityZone.parentID,
DBInfo.ProvinceCityZone.zipCode
};
public ProvinceCityZoneDao(Context context){
dbHelper = new DBHelper(context);
}
/**
* 通过父级编号得到子数据
* @param parentID
* @return
*/
public Map<Integer,List> GetMapList(String parentID){
try{
db = dbHelper.getReadableDatabase();
Map<Integer,List> mapData= new HashMap<Integer,List>();
Cursor cursor = db.query(
"ProvinceCityZone",
PCZColumns,"parentID=?",new String[]{parentID},
null,null,null
);
if(cursor != null && cursor.getCount() > 0){
List plist1 = new ArrayList();
List plist2 = new ArrayList();
while (cursor.moveToNext()){
Map map = new HashMap();
map.put(cursor.getString(cursor.getColumnIndex("areaName")),
cursor.getInt(cursor.getColumnIndex("_id")));
plist1.add(map);
plist2.add(cursor.getString(cursor.getColumnIndex("areaName")));
}
mapData.put(0,plist1);
mapData.put(1,plist2);
}
return mapData;
}
catch (Exception ex){
ex.printStackTrace();
}
return null;
}
}
5.Activity 代码
/*数据处理类*/
ProvinceCityZoneDao provinceCityZoneDao = null;
/*province*/
List plist = null;
List pdata = null;
/*city*/
List clist = null;
List cdata = null;
/*area*/
List alist = null;
List adata = null;
Spinner spprovince = null;
Spinner spcity = null;
Spinner sparea = null;
TextView tvShowRes = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_yz1309);
provinceCityZoneDao = new ProvinceCityZoneDao(this);
plist = new ArrayList();
pdata = new ArrayList();
clist = new ArrayList();
cdata = new ArrayList();
alist = new ArrayList();
adata = new ArrayList();
spprovince = (Spinner)findViewById(R.id.spprovince);
spcity = (Spinner)findViewById(R.id.spcity);
sparea = (Spinner)findViewById(R.id.sparea);
tvShowRes = (TextView)findViewById(R.id.tvShowRes);
/*init data*/
initProvince();
}
private void initProvince(){
try{
Map<Integer,List> mapData =provinceCityZoneDao.GetMapList("0");
plist = mapData.get(1);
pdata = mapData.get(0);
ArrayAdapter arrayAdapter = new ArrayAdapter(
getActivity().getApplicationContext(),
android.R.layout.simple_spinner_item,plist);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_gallery_item);
spprovince.setAdapter(arrayAdapter);
/*change event*/
spprovince.setOnItemSelectedListener(provinceItemSelectedListener);
}
catch (Exception ex){
ex.printStackTrace();
}
}
String provinceSelectedValue = "";
/*province change*/
private AdapterView.OnItemSelectedListener provinceItemSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Spinner spProvinceTemp = (Spinner)parent;
provinceSelectedValue = (String)spProvinceTemp.getItemAtPosition(position);
Map<String,Integer> data = (Map)pdata.get(position);
String pid = data.get(provinceSelectedValue).toString();
Map<Integer,List> mapCity = provinceCityZoneDao.GetMapList(pid);
clist = mapCity.get(1);
cdata = mapCity.get(0);
/*设置默认显示的字体颜色*/
TextView tvTemp = (TextView)view;
tvTemp.setTextColor(Color.BLACK);
ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity().getApplicationContext(),
android.R.layout.simple_spinner_item,clist);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_gallery_item);
spcity.setAdapter(arrayAdapter);
spcity.setOnItemSelectedListener(cityItemSelectedListener);
getResValues();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
};
/*city change*/
String citySelectedValue = "";
private AdapterView.OnItemSelectedListener cityItemSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Spinner spCityTemp = (Spinner)parent;
citySelectedValue = (String)spCityTemp.getItemAtPosition(position);
Map<String,Integer> data = (Map)cdata.get(position);
String pid = data.get(citySelectedValue).toString();
Map<Integer,List> mapArea = provinceCityZoneDao.GetMapList(pid);
alist = mapArea.get(1);
adata = mapArea.get(0);
/*设置默认显示的字体颜色*/
TextView tvTemp = (TextView)view;
tvTemp.setTextColor(Color.BLACK);
ArrayAdapter arrayAdapter = new ArrayAdapter(
getActivity().getApplicationContext(),
android.R.layout.simple_spinner_item,alist
);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_gallery_item);
sparea.setAdapter(arrayAdapter);
sparea.setOnItemSelectedListener(areaItemSelectedListener);
getResValues();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
};
/*area change*/
String areaSelectedValue = "";
private AdapterView.OnItemSelectedListener areaItemSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Spinner spAreaTemp = (Spinner)parent;
areaSelectedValue = (String)spAreaTemp.getItemAtPosition(position);
/*设置默认显示的字体颜色*/
TextView tvTemp = (TextView)view;
tvTemp.setTextColor(Color.BLACK);
getResValues();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
};
/*获取数据*/
private void getResValues(){
String res = "";
if(provinceSelectedValue != "" && citySelectedValue !="" && areaSelectedValue != ""){
res = provinceSelectedValue +"-"+citySelectedValue+"-"+areaSelectedValue;
}
tvShowRes.setText(res);
}
多多留言交流..