2013-05-19 155 views
0

我有一種情況在這裏,我想通過在列表項單擊所需的JSON對象在我下面的活動傳遞JSON對象列表項其他活動點擊

activity alldeals

假設當我點擊deal 2應該將jArray的第2個json對象傳遞給intent,並且我的下一個活動必須獲取它。

但這裏的問題是,當我點擊任何列表項時,下一個活動收到最後索引final deal activity的json對象。

這裏是alldeals.java

try{ 
      jArray = new JSONArray(result); 
      for(int i=0;i<jArray.length();i++){ 
        json_data = jArray.getJSONObject(i); 

        Log.i("log_tag","dealid: "+json_data.getString("deal_id")+ 
          ", hotel name: "+json_data.getString("hotel_name")+ 
          ", location: "+json_data.getString("location")+ 
          ", website: "+json_data.getString("website") 
        ); 

      } 

      json_data=new JSONObject(); 
      String[] data=new String[jArray.length()]; 
      planetList = new ArrayList<String>(); 
       for(int i=0;i<jArray.length();i++) 
       { 
        json_data= jArray.getJSONObject(i); 
        data[i]=json_data.getString("deal_id"); 
        Log.i("log_tag", "string "+data[i]); 
        planetList.addAll(Arrays.asList("Deal "+ (i+1))); 
        listAdapter = new ArrayAdapter<String>(this, R.layout.listrow, planetList); 
        runOnUiThread(new Runnable() { 
         public void run() { 
          list.setAdapter(listAdapter); 
         } 
        }); 
       } 
       list.setOnItemClickListener(new OnItemClickListener() { //where to put this piece of code??? 

        public void onItemClick(AdapterView<?> arg0, View arg1, 
          final int arg2, long arg3) { 

        Intent intent = new Intent(context,Finaldeal.class); 
        intent.putExtra("deal", json_data.toString()); 
        startActivity(intent);          
        } 

       }); 

    } 
    catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
    } 

我知道爲了解決這個問題,我必須把我的list.setOnItemClickListener()在適當的地方我的代碼,但我很困惑,把它放在哪裏,所以,當我點擊deal1第一JSON對象將被傳遞到意圖

回答

3

你可以從JsonArray根據ListView項通過JsonObject點擊位置爲:

list.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> arg0, View arg1, 
        final int arg2, long arg3) { 
     if(!jArray.isNull(arg2)){ 
      Intent intent = new Intent(context,Finaldeal.class); 
      intent.putExtra("deal", jArray.optJSONObject(arg2).toString()); 
      startActivity(intent);          
     } 
     } 

    }); 

目前你逝去json_data當循環執行結束

+0

GR8感謝名單...它的工作 –

0

如果你希望它是更靈活的,它總是包含最後的JSONObject從JSONArray,你可以把你在ArrayListget()你想要的數據傳遞的JSON數據自動傳遞取決於單擊的項目,像這樣:

ArrayList<String> jsonList = new ArrayList<String>(); 
jsonList.add(jsonDataForFirstListitem); // JSON data in String form 
jsonList.add(jsonDataForSecondListitem); 
// And so on... 

然後你聽衆,你可以簡單地把它之後,你定義名單。

ListView list = (ListView) findViewById(R.id.myListView); 

list.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> adapter, View view, 
         final int pos, long id) { 

       Intent intent = new Intent(context,Finaldeal.class); 
       String jsonData = jsonList.get(pos); 
       intent.putExtra("deal", jsonData); 
       startActivity(intent);          
       } 

      }); 
+0

:我覺得你ρяσѕρєяķ誤解了我的問題的答案就是我想要的......但不管怎麼說感謝關注 –

+0

是啊,有點誤會,所以我更新了我回答。沒問題。 :) – Krauxe

0

我知道爲時已晚發佈此的answere但你的問題是排名在谷歌搜索引擎第一的位置,所以如果有人還沒有找到解決辦法,然後可能是我的answere幫助他們。 對JSON數據傳遞到另一個活動根據列表視圖位置:

OnItemClick需要複製這個代碼執行此內:

的JSONObject的SelectedItem =(yourjsonresponse).getJsonObject(位置);

和JSONArray相同。

然後在您的意圖中傳遞SelectedItem.toString。

注意:yourjsonresponse是您的主API響應,可以是jsonobject或jsonarray。

謝謝

相關問題