【发布时间】:2017-12-03 00:40:43
【问题描述】:
我有 2 个微调器,一个用于省,另一个用于市。但是它们相互依赖。如果我在省微调器中选择豪登省,第二个微调器必须显示约翰内斯堡、比勒陀利亚、百夫长,如果我在省中选择 KZN,我希望第二个微调器显示彼得马里斯堡、德班、乌伦迪。
这是我的代码。我可以从我的 mysql 数据库中填充微调器,但我无法创建其他依赖项
第一个微调器 JSON 数据:
"Provinces": [
{
"provinceid": "1",
"provincename": "A"
},
{
"provinceid": "2",
"provincename": "B"
}
]}
第二个微调器 JSON 数据:(与我的 php 和 db 中的省份相关。
//获取列出城市的值 $provinceid= $_POST['provinceid'];)
{
"Cities": [
{
"cityid": "1",
"cityname": "AA"
},
{
"cityid": "2",
"cityname": "BB"
}
]}
这是我的 java 代码。
private ArrayList<String> province;
private ArrayList<String> city;
private JSONArray provinces;
String ilceid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
ilce = new ArrayList<String>();
//Initializing Spinner
spinner = (Spinner) findViewById(R.id.spinner);
spinner2 = (Spinner) findViewById(R.id.spinner2);
//Adding an Item Selected Listener to our Spinner
//As we have implemented the class Spinner.OnItemSelectedListener to this class iteself we are passing this to setOnItemSelectedListener
spinner.setOnItemSelectedListener(WelcomeActivity.this);
spinner2.setOnItemSelectedListener(WelcomeActivity.this);
getData();
}
private void getData(){
//Creating a string request
StringRequest stringRequest = new StringRequest(SharedPrefManager.DATA_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONObject j = null;
try {
//Parsing the fetched Json String to JSON Object
j = new JSONObject(response);
//Storing the Array of JSON String to our JSON Array
provinces= j.getJSONArray(SharedPrefManager.JSON_ARRAY);
getProvinces(provinces);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
//Creating a request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(stringRequest);
}
private void getProvinces(JSONArray j){
//Traversing through all the items in the json array
for(int i=0;i<j.length();i++){
try {
//Getting json object
JSONObject json = j.getJSONObject(i);
province.add(json.getString(SharedPrefManager.TAG_PROVINCENAME));
} catch (JSONException e) {
e.printStackTrace();
}
}
//Setting adapter to show the items in the spinner
spinner.setAdapter(new ArrayAdapter<String>(WelcomeActivity.this, android.R.layout.simple_spinner_dropdown_item, province));
}
private String getProvinceId(int position){
String provid="";
try {
JSONObject json = provinces.getJSONObject(position);
course = json.getString(SharedPrefManager.TAG_PROVINCEID);
} catch (JSONException e) {
e.printStackTrace();
}
return provid;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}}
第一个微调器在这种情况下有效。但是我如何根据第一个微调器填充微调器2?
【问题讨论】: