2017-05-07 8 views
-1

nameの値がToastonItemClickになりましたListViewですが、codeの値はどのように取得できますか?JSONオブジェクトの対応するJSON値を取得するにはどうすればよいですか?

私はこのようになりますJSON配列があります。このようなonItemClick

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); 
    } 

そしてnameToast

私はこのように私の ListViewname値を取得

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

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(); 
    } 
}); 

しかしnameではなく、にcodeの値が必要です。どうしたらいいですか?

+0

チェック例外を解析します。コードから、それは大丈夫と思われる。 を入力するか、ログを追加して理解を深めることができます。 –

答えて

1

でテストすることができますしかし、私はあなたが実際にかなりのみ"name"よりもJSONから"code"を解析する必要が

その後トーストのコード値ではなく、名前をしたい、とアダプターに追加してください。あなたはJSONを解析しながら、

例えば、それを

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

あなたはonItemclickではあなたはそれが同じインデックスを持っているので、コードのArrayListからコードを取得するには、この位置を使用しますが、ArrayListのをコーディングする名前のArrayListやコードに名前の値を置くことができます。それとも、ハッシュマップ

関連する問題