我正在尝试在应用中实现多个微调器,其中在凌空调用后填充数据。它应该这样工作:基于对第一个微调器值interface
的选择,第二个微调器应使用所选"id"
作为参数从另一个api调用填充其值。
现在,我可以在微调器中显示"id"
。但不确定如何为第二个api调用获取所选项目的"name"
。现在,当我在第一个微调器中选择任何项目时,它仅返回数组中最后一个项目的id
。
Json阵列响应:
id
FirstLevel (模型)
[
{
"id":1,
"name":"Roger Federer",
"country":"Switzerland",
"city":"Basel"
},
{
"id":2,
"name":"Rafael Nadal",
"country":"Spain",
"city":"Madrid"
},
{
"id":3,
"name":"Novak Djokovic",
"country":"Serbia",
"city":"Monaco"
},
{
"id":4,
"name":"Andy Murray",
"country":"United Kingdom",
"city":"London"
},
{
"id":5,
"name":"Maria Sharapova",
"country":"Russia",
"city":"Moscow"
},
{
"id":8,
"name":"Ana Ivanovic",
"country":"Serbia",
"city":"Belgrade"
}
]
Java代码
public class FirstLevel {
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
private String title;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private int id;
}
答案 0 :(得分:1)
您的这一行
selectedFirstLevel= //How to get the 'id' of the selected item here?
将是
selectedFirstLevel = FirstLevelDataAdapterClassList.get(position).getId();
尝试一下。谢谢
答案 1 :(得分:0)
FirstLevel GetFirstLvDataModel = new FirstLevel();
应该在forloop中声明,并且适配器在循环之外。
尝试此方法->
public void FIRST_PARSE_DATA_AFTER_WEBCALL(JSONArray array, final ViewHolder viewHolder) {
FirstLevelDataAdapterClassList = new ArrayList<>();
for (int i = 0; i < array.length(); i++) {
JSONObject json = null;
try {
json = array.getJSONObject(i);
FirstLevel GetFirstLvDataModel = new FirstLevel(); // Define class object here
GetFirstLvDataModel.setId(json.getString("id"));
GetFirstLvDataModel.setName(json.getString("name"));
FirstLevelDataAdapterClassList.add(GetFirstLvDataModel);
names.add(FirstLevelDataAdapterClassList.get(i).getTitle().toString());
} catch (JSONException e) {
e.printStackTrace();
}
} // Close for loop here
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(context, simple_spinner_item, names);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
viewHolder.spinFirst.setAdapter(spinnerArrayAdapter);
viewHolder.spinFirst.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedFirstLevel=FirstLevelDataAdapterClassList.get(position).getId();
Log.i("FLFL",selectedFirstLevel);
SECOND_LEVEL_WEB_CALL(viewHolder,selectedFirstLevel);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}