2016-03-27 20 views
0

重複しないでください。リスナーをクリックした後でリストビューからアイテムを1つ取得する方法

私はこの質問を以前に聞いたことがありますが、誰も私の問題を解決しません。ここに私の問題があります: 私は検索アクションを実行したいです。データはデータベースからフェッチされ、listViewに表示されます。 1つのユーザー名をクリックすると、userIDが2番目のアクティビティに渡され、プロフィールが表示されます。データにはユーザーID、ユーザー名、性別、住所が含まれますが、1つの項目userIDのみが2番目のアクティビティに渡されます。 私は多くのチュートリアルを検索しましたが、このようなものは何も見つかりませんでした。

もう一度繰り返しますが、重複しないでください。ここで

は私のコードです:

listView.setAdapter(adapterSearchElements); 

    adapterSearchElements = new AdapterSearchElements(this, R.layout.searchresultcutomrow); 
    listView.setAdapter(adapterSearchElements); 
    json_string = getIntent().getExtras().getString("json_data"); 

    try { 
     jsonObject = new JSONObject(json_string); 
     jsonArray = jsonObject.getJSONArray("server_response"); 

     int count = 0; 
     for (int k = 0; k < jsonArray.length(); k++) { 
      // while (count < jsonArray.length()) { 
      // JSONObject JO = jsonArray.getJSONObject(count); 

      JSONObject JO = jsonArray.getJSONObject(Integer.parseInt(String.valueOf(k))); 

      user_id = JO.getString("user_id"); 
      name = JO.getString("name"); 
      Gender = JO.getString("Gender"); 
      address = JO.getString("address"); 
      final SearchResultsElements searchResultsElements = new SearchResultsElements(user_id,name, Gender, address); 
      adapterSearchElements.add(searchResultsElements); 

      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View view, 
             int position, long id) { 

       // String userid=searchResultsElements.getUser_id(); 

        // final String item = (String)parent.getItemIdAtPosition(position); 


        Intent i = new Intent(DisplaySearchResults.this, FriendsProfile.class); 

        i.putExtra("user_id", user_id); 
        startActivity(i); 
       } 
      }); 
      // count++; 

     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+0

あなたはどの部分に問題がありますか?正しいユーザーIDを新しいアクティビティに渡す方法、または 'ListView'も正しく表示されないのかどうかを調べるだけですか? –

+0

listViewは正しく表示されていますが、選択したユーザーIDを2番目のアクティビティに渡したい場合は、自分の名前またはアドレスではなくuserIDのみを受け取ります。 – Bebo

+0

listViewから選択したユーザーIDを取得して2番目のアクティビティに渡す方法を知りたい@GeorgeMulligan – Bebo

答えて

0

あなたが唯一、次のようにlistView.setOnItemClickListener()コールバックに渡された位置にSearchResultsElementsをルックアップする必要があります。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 

     SearchResultsElements selectedSearchResultsElements = adapterSearchElements.getItem(position); 
     Intent i = new Intent(DisplaySearchResults.this, FriendsProfile.class); 

     i.putExtra("user_id", selectedSearchResultsElements.getUser_id()); 
     startActivity(i); 
    } 
}); 

私が見て、ここでアダプタを使用しましたアイテムをアップする。返されたオブジェクトを正しい型にキャストすると、listView.getItemAtPosition(position);を使用することもできます。

+0

ありがとうそんなに 。今働いている。私は誰もここで正しい答えを知っていると思うが、あなたは...素晴らしい@ジョージ・マリガン – Bebo

0

データベースから要素を取得する場合、CursorAdapterを使用すると思います。

関連する問題