2017-05-07 89 views
-1

获取name我的Toast中的值onItemClick我的ListView我可以做,但是如何获得code值?如何在我的JSON对象中获取相应的JSON值?

我有一个JSON数组,看起来像这样:

[ 
    { 
     "code": "123", 
     "name": "Jim" 
    }, 
    { 
     "code": "456", 
     "name": "Sally" 
    }, 
    { 
     "code": "789", 
     "name": "Bob" 
    }, 
    { 
     "code": "012", 
     "name": "Jill" 
    }, 
    etc... 
    ] 

我得到的name值在我ListView这样的:

public void onStart(){ 
     super.onStart(); 

     // Create json array request 
     JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(Request.Method.POST, 
       "http://www.nameofsite.com/nameoffile.php", (JSONArray)null, new Response.Listener<JSONArray>(){ 
      public void onResponse(JSONArray jsonArray){ 
       // Successfully download json 
       // So parse it and populate the listview 
       for(int i=0;i<jsonArray.length();i++){ 
        try { 
         JSONObject jsonObject=jsonArray.getJSONObject(i); 
         items.add(jsonObject.getString("name")); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
       adapter.notifyDataSetChanged(); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError volleyError) { 
       Log.e("Error", "Unable to parse json array"); 
      } 
     }); 
     // Create request queue 
     RequestQueue requestQueue= Volley.newRequestQueue(this); 
     // add json array request to the request queue 
     requestQueue.add(jsonArrayRequest); 
    } 
onItemClick

nameToast这样的:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
     TextView myTextView = (TextView) view.findViewById(R.id.txt); 
     String text = myTextView.getText().toString(); 
     Toast.makeText(getApplicationContext(),text, Toast.LENGTH_LONG).show(); 
    } 
}); 

但我想要toast中的code值,而不是name。我该怎么做?

+0

检查异常,而你解析JSON。从代码它似乎是好的。 或添加日志以便更好地理解。 –

回答

1

测试,但我想在敬酒的代码值,而不是名称

然后,你需要真正从JSON解析"code"而不是只有"name",和将其添加到您的适配器。

例如,解析它

String code = jsonObject.getString("code"); 
String name = jsonObject.getString("name"); 
items.add(code + " " + name); 

和吐司它

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
     String[] parts = items.get(i).split(" "); 
     Toast.makeText(getApplicationContext(),parts[0], Toast.LENGTH_LONG).show(); 
    } 
}); 
-2

试试这个。

json.getJSONObject("jsonData").getString("name"); 
+0

''jsonData“'从哪里来? –

0

你可以把名称值名称ArrayList和代码编写的ArrayList,在onItemclick你会使用这个位置,因为它具有相同的指数摆脱代码的ArrayList代码。或者你可以用HashMap的