In the previous article, we introduced how to obtain data from provinces, cities, and cities. Now we will introduce an example of how to use the spinner control to implement Level 3 linkage between provinces, cities, and cities.
The following code is implemented during project development.
First, we will show the three slaves in the layout file.
<Linearlayout Android: layout_height = "40dip"
Android: layout_width = "fill_parent"
Android: Id = "@ + ID/linearlayoutarea" Android: Orientation = "horizontal">
<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>
The code for assigning values to these spinner controls to bind events:
// Read the data of the province, city, and district from the database
// Initialize the province drop-down list
Private void initialprovince (){
Try {
Map <integer, list> DATA = addressutil. getprovince (File );
Provincelist = data. Get (1 );
Provincedata = data. Get (0 );
Arrayadapter provinceadapter = new arrayadapter (mcontext,
Android. R. layout. simple_spinner_item, provincelist );
Provinceadapter
. Setdropdownviewresource (Android. R. layout. simple_spinner_dropdown_item); // Style
Spprovince. setadapter (provinceadapter );
Spprovince. setonitemselectedlistener (itemselectedlistener );
} Catch (exception e ){
Log. D ("winestock", "initialprovince:" + E. getmessage ());
}
}
String selectedprovince = ""; // province selected in the drop-down list
// Save the drop-down box event
Private onitemselectedlistener itemselectedlistener = new onitemselectedlistener (){
@ Override
Public void onitemselected (adapterview <?> Parent, view,
Int position, long ID ){
Try {
Spinner spprovince = (spinner) parent;
Selectedprovince = (string) spprovince
. Getitematposition (position );
Arrayadapter cityadapter = NULL;
Map <string, integer> DATA = (MAP) provincedata. Get (position); // obtain the corresponding province id based on the selected province ID.
// Then get the city
Int pid = data. Get (selectedprovince); // obtain the province ID
Map <integer, list> citymap = addressutil
. Getcitybypid (PID, file );
Citylist = citymap. Get (1 );
Citydata = citymap. Get (0 );
Cityadapter = new arrayadapter (mcontext,
Android. R. layout. simple_spinner_item, citylist );
Cityadapter
. Setdropdownviewresource (Android. R. layout. simple_spinner_dropdown_item );
Spcity. setadapter (cityadapter );
Spcity. setonitemselectedlistener (cityselectedlistener );
} Catch (exception e ){
Log. D ("winestock", "select province error:" + E. getmessage ());
}
}
@ Override
Public void onnothingselected (adapterview <?> Parent ){
// Todo auto-generated method stub
}
};
String selectedcity = ""; // The selected city from the drop-down list
// City drop-down box event
Private onitemselectedlistener cityselectedlistener = new onitemselectedlistener (){
@ Override
Public void onitemselected (adapterview <?> Parent, view,
Int position, long ID ){
Try {
Spinner spcity = (spinner) parent;
Selectedcity = (string) spcity. getitematposition (position );
Arrayadapter areaadapter = NULL;
Map <string, integer> DATA = (MAP) citydata. Get (position); // obtain the corresponding province id based on the selected province ID.
// Then get the city
Int pid = data. Get (selectedcity); // obtain the city id
List <string> listarea = addressutil. getareabypid (PID, file );
Areaadapter = new arrayadapter (mcontext,
Android. R. layout. simple_spinner_item, listarea );
Areaadapter
. Setdropdownviewresource (Android. R. layout. simple_spinner_dropdown_item );
Sparea. setadapter (areaadapter );
Sparea. setonitemselectedlistener (areaselectedlistener );
} Catch (exception e ){
Log. D ("winestock", "select city error:" + E. getmessage ());
}
}
@ Override
Public void onnothingselected (adapterview <?> Parent ){
// Todo auto-generated method stub
}
};
String selectedarea = ""; // area selected in the drop-down box
// Area drop-down box event
Private onitemselectedlistener areaselectedlistener = new onitemselectedlistener (){
@ Override
Public void onitemselected (adapterview <?> Parent, view,
Int position, long ID ){
Try {
Spinner sparea = (spinner) parent;
Selectedarea = (string) sparea. getitematposition (position );
If (selectedprovince! = "" & Selectedcity! = ""
& Selectedarea! = ""){
String stradd = selectedprovince + selectedcity
+ Selectedarea;
Etaddress. settext (stradd );
}
} Catch (exception e ){
Log. D ("winestock", "select area error:" + E. getmessage ());
}
}
@ Override
Public void onnothingselected (adapterview <?> Parent ){
// Todo auto-generated method stub
}
};