如何在android应用程序中根据国家更改区域?
我有两个微调器。一个位于代表国家的工具栏上,另一个位于代表区域的片段上。我正在从服务器获取数据。当我选择国家时,我想这样做,特定区域显示在区域微调器中 这是我的json数据如何在android应用程序中根据国家更改区域?,android,json,spinner,Android,Json,Spinner,我有两个微调器。一个位于代表国家的工具栏上,另一个位于代表区域的片段上。我正在从服务器获取数据。当我选择国家时,我想这样做,特定区域显示在区域微调器中 这是我的json数据 { "Status": 1, "StatusMessage": "Country and Country Area List", "data": [ { "CountryID": "1", "CountryName": "In
{
"Status": 1,
"StatusMessage": "Country and Country Area List",
"data": [
{
"CountryID": "1",
"CountryName": "India",
"CountryArea": [
{
"CountryID": "1",
"AreaID": "1",
"AreaName": "Kuwait City(Capital)"
},
{
"CountryID": "1",
"AreaID": "2",
"AreaName": " Hawally"
},
{
"CountryID": "1",
"AreaID": "3",
"AreaName": "Farwaniya"
},
{
"CountryID": "1",
"AreaID": "4",
"AreaName": " Ahmadi"
},
{
"CountryID": "1",
"AreaID": "5",
"AreaName": " Jahra"
}
]
},
{
"CountryID": "2",
"CountryName": "Dubai",
"CountryArea": [
{
"CountryID": "2",
"AreaID": "6",
"AreaName": " Jeddah"
},
{
"CountryID": "2",
"AreaID": "7",
"AreaName": " Riyadh"
},
{
"CountryID": "2",
"AreaID": "8",
"AreaName": " Khobar"
},
{
"CountryID": "2",
"AreaID": "9",
"AreaName": " Abha"
},
{
"CountryID": "2",
"AreaID": "10",
"AreaName": " Abqiq"
},
{
"CountryID": "2",
"AreaID": "11",
"AreaName": " Abu Arish"
},
{
"CountryID": "2",
"AreaID": "12",
"AreaName": " Al Ahsa"
},
{
"CountryID": "2",
"AreaID": "13",
"AreaName": " Al Baha"
},
{
"CountryID": "2",
"AreaID": "14",
"AreaName": " Al Dhahran"
},
{
"CountryID": "2",
"AreaID": "15",
"AreaName": " Al Jubail"
},
{
"CountryID": "2",
"AreaID": "16",
"AreaName": " Al Kharj"
},
{
"CountryID": "2",
"AreaID": "17",
"AreaName": " Al Madina El Monawara"
},
{
"CountryID": "2",
"AreaID": "18",
"AreaName": " Al Qatif"
},
{
"CountryID": "2",
"AreaID": "19",
"AreaName": " Al Taif"
},
{
"CountryID": "2",
"AreaID": "20",
"AreaName": " Almadnab"
},
{
"CountryID": "2",
"AreaID": "21",
"AreaName": " Bisha"
},
{
"CountryID": "2",
"AreaID": "22",
"AreaName": " Buraida"
},
{
"CountryID": "2",
"AreaID": "23",
"AreaName": " Dawadmy"
},
{
"CountryID": "2",
"AreaID": "24",
"AreaName": " Hafr Elbatin"
},
{
"CountryID": "2",
"AreaID": "25",
"AreaName": " Hail "
},
{
"CountryID": "2",
"AreaID": "26",
"AreaName": " Jazan"
},
{
"CountryID": "2",
"AreaID": "27",
"AreaName": " Mecca"
},
{
"CountryID": "2",
"AreaID": "28",
"AreaName": " Oniza"
},
{
"CountryID": "2",
"AreaID": "29",
"AreaName": " Qurayat"
},
{
"CountryID": "2",
"AreaID": "30",
"AreaName": " Zulfi"
},
{
"CountryID": "2",
"AreaID": "31",
"AreaName": "Dammam"
}
]
}
]
}
这是my CountryAdpter,位于工具栏上:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
super.onCreateOptionsMenu(menu, inflater);
this.menu = menu;
MenuItem menuItem = menu.findItem(R.id.menu_spinner).setVisible(true);
mCountrySpinner = (Spinner) MenuItemCompat.getActionView(menuItem);
countryAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, mCountryList);
countryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mCountrySpinner.setAdapter(countryAdapter);
mCountrySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
countryId = getCountryId.get(position);
Log.e("countryid", countryId);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
@覆盖
创建选项菜单(菜单菜单,菜单充气机){
充气机。充气(右菜单,菜单);
super.onCreateOptions菜单(菜单,充气机);
this.menu=菜单;
MenuItem MenuItem=menu.findItem(R.id.menu\u微调器).setVisible(true);
mCountrySpinner=(微调器)MenuItemCompat.getActionView(menuItem);
countryAdapter=newArrayAdapter(getContext(),android.R.layout.simple\u微调器\u下拉菜单\u项,mCountryList);
countryAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
mCountrySpinner.setAdapter(countryAdapter);
mCountrySpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
countryId=getCountryId.get(位置);
Log.e(“countryid”,countryid);
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}
我将概述以正确方式构建数据所需的一般步骤
1st.您需要解析给定的JSON。我强烈建议使用像GSON这样的库。它很容易使用,而且非常有用。要使用GSON通过它,您必须创建至少两个类-Country和CountryArea。类Country应该有CountryArea对象的列表。确保变量名mach完全来自JSON的对应键,或者使用GSON的SerializedName属性
2nd.当您点击ONIMSELECTED时,以与填充第一个微调器相同的方式填充第二个微调器,但是这次是针对相应的国家/地区。你的微调器代码在哪里?我已经建议OP使用
countryAdapter=new ArrayAdapter
而不是countryAdapter=new ArrayAdapter
,但他只是忽略了这一点,所以可能使用GSON和这两个POJO类不会被HIM接受。我接受了你的答案,但我不知道如何使用这个过程。我制作了Country class并将数据保存在其中。但是没有变化。@pskink