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提前

+0

你是如何实现你的适配器可能会请你通过添加适配器'GetDataAdapter' –

+0

@AhmadAlkhatib与Getdataadapter更新您的帮助的人 – GuruCharan

为了避免适配器和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(); 
} 
+0

感谢更新你的问题,它的工作,你拯救了我的一天。 – GuruCharan

+0

欢迎:) –