Android的微调ID没有得到完美的价值,JSON的MySQL数据(解决),获取ID基于名称从微调onitemselected
iam试图加载一些数据从JSON到Android微调,数据加载完美,但当我试图获取所选项目的ID并显示姓氏ID值,无论选择哪个项目,请帮助我摆脱这种情况。 她的json响应Android的微调ID没有得到完美的价值,JSON的MySQL数据(解决),获取ID基于名称从微调onitemselected
[{"name":"aaa","id":"1"},
{"name":"bbb","id":"2"},
{"name":"ccc", "id":"3"},
{"name":"ddd", "id":"4"}]
Mainactivity.java
protected void receivedata(final String result){
final ArrayList<String> list = new ArrayList<>();
final ArrayList<GetDataAdapter> datalist = new ArrayList<>();
list.clear();
try{
GetDataAdapter GetDatadp = new GetDataAdapter();
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject jsonObject=jArray.getJSONObject(i);
GetDatadp.setName(jsonObject.getString("name"));
GetDatadp.setId(jsonObject.getString("id"));
datalist.add(GetDatadp);
list.add(jsonObject.getString("name"));
}
}
catch(JSONException e){
e.printStackTrace();
}
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.spinner_layout, R.id.txt, list);
sp.setAdapter(adapter);
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View view, int position, long row_id) {
String id = datalist.get(position).getId();
Toast.makeText(getApplicationContext(),"Value " +id , Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
//Do something
}
}
);
}
GetDataAdapte.java
public class GetDataAdapter {
String name;
String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
所以当我尝试选择名称AAA/BBB或任何其显示id值4.如何显示正确的id.thanks提前
为了避免适配器和DTO(模型类)之间的命名混乱
Adapter:
适配器对象充当一个AdapterView和该视图的基础数据之间的桥梁。适配器提供对数据项的访问。适配器还负责为数据集中的每个项目制作视图。
但是,你的问题我的理解,因为你只创建了一个对象,它是GetDataAdapter
你的情况,所以为了得到GetDataAdapter
对象的有效的列表,你必须建立在循环的新实例,取看看下面的更新的代码:
try{
GetDataAdapter GetDatadp ;
JSONObject jsonObject;
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
jsonObject=jArray.getJSONObject(i);
GetDatadp = new GetDataAdapter();
GetDatadp.setName(jsonObject.getString("name"));
GetDatadp.setId(jsonObject.getString("id"));
datalist.add(GetDatadp);
list.add(jsonObject.getString("name"));
}
}
catch(JSONException e){
e.printStackTrace();
}
感谢更新你的问题,它的工作,你拯救了我的一天。 – GuruCharan
欢迎:) –
你是如何实现你的适配器可能会请你通过添加适配器'GetDataAdapter' –
@AhmadAlkhatib与Getdataadapter更新您的帮助的人 – GuruCharan