我有两个微调器,第一个微调器与第二个微调器有关。
我正在使用JSON为两者填充适配器。
当我启动活动时,两个适配器都已经填充了正确的数据(第一个和第二个适配器是相关的)。
但是,当我尝试更改第一个微调器的项目位置时,第二个微调器的适配器仍然包含第一个加载的数据。
我想要的是,当第一个微调器的项位置发生变化时,第二个微调器的适配器可以动态地包含与第一个微调器相关的数据。
我不知道问题是什么,我真的需要一些帮助。
这是我的代码:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected (AdapterView < ? > parent, View view,int position, long id){
try {
JSONObject json = result.getJSONObject(position);
result = json.getJSONArray("all_state");
state.clear();
for (int i = 0; i < result.length(); i++) {
try {
JSONObject json2 = result.getJSONObject(i);
state.add(json2.getString("state"));
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
adapter = new ArrayAdapter<>(ViewState.this, R.layout.spinner_state, state);
adapter.notifyDataSetChanged();
spinner2.setAdapter(adapter);
}
@Override
public void onNothingSelected (AdapterView < ? > parent){
}
});
答案 0 :(得分:0)
它已经解决了,问题是因为我把JSONObject和JSONArray放到同一个变量“result”中。
所以这是正确的代码:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected (AdapterView < ? > parent, View view,int position, long id){
try {
JSONObject json = result.getJSONObject(position);
result2 = json.getJSONArray("all_state");
state.clear();
for (int i = 0; i < result2.length(); i++) {
try {
JSONObject json2 = result2.getJSONObject(i);
state.add(json2.getString("state"));
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
adapter = new ArrayAdapter<>(ViewState.this, R.layout.spinner_state, state);
adapter.notifyDataSetChanged();
spinner2.setAdapter(adapter);
}
@Override
public void onNothingSelected (AdapterView < ? > parent){
}
});