2017-09-17 58 views
0

我已經完成了解析json並將其獲取到ListView,但我有一個問題當點擊ListView中的項目只顯示最後解析的Json數據,當我點擊時按位置顯示正確數據的項目:(onItemClick)從列表視圖顯示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

你的listview被填充?它看起來像在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

我編輯它一點,以顯示如何獲得點擊行信息。 –

相關問題