2017-09-17 13 views
0

jsonを解析してListViewに取得しましたが、問題がありますlistviewから最後に解析されたJsonデータのみを表示すると、位置によって正しいデータを表示する項目:(onItemClick)listviewからJsonデータを表示する - Android

for (int i = 0; i < jsonArray.length(); i++) { 
          JSONObject c = jsonArray.getJSONObject(i); 
          final String fname = c.getString("fname"); 
          final String lname = c.getString("lname"); 
          String username = c.getString("username"); 
          //String user_id = c.getString("user_id"); 
          //String gender = c.getString("gender"); 

          HashMap<String, String> contact = new HashMap<>(); 

          contact.put("fname", fname); 
          contact.put("lname", lname); 
          contact.put("username", username); 

          users.add(contact); 

          ListAdapter adapter = new SimpleAdapter(FindPeopleActivity.this, users, 
            R.layout.list_item, new String[]{"fname", "lname", "username"}, 
            new int[]{R.id.fname, R.id.lname, R.id.username}); 
          lv.setAdapter(adapter); 

          lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
           @Override 
           public void onItemClick(AdapterView<?> parent , View view , int position , long id){ 
            Intent i = new Intent(FindPeopleActivity.this,UserProfileActivity.class); 
            Toast.makeText(getApplicationContext(),fname,Toast.LENGTH_SHORT).show(); 
           } 
          }); 
         } 
+0

あなたのリストビューにデータが入力されますか? forループ内でアダプタとonClickListenerを設定しているようです。 –

答えて

1

forループの後にsetOnItemClickListenerを設定します。

lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 

     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 


       //i = row/item clicked in listview 

      //Get the variable from the array you passed to the adapter 
      newItem.variable1 = jsonArrayData[i].variable1; 
      newItem.variable2 = jsonArrayData[i].variable2; 

      //Pass the selected json info... 
      yourMethod(newItem); 




      Toast.makeText(getApplicationContext(),fname,Toast.LENGTH_SHORT) 
      .show(); 

     } 
    }); 

いくつかのテスト値をあなたのトーストに入れてください。たとえば、どの値が渡されているかを確認してください。

+0

多分それは動作していますが、自動jsonデータが表示されていますが、アイテムがクリックされた場合にのみコードが動作します –

+0

クリックした行情報を取得する方法を少し編集しました。 –

関連する問題