2016-07-18 50 views
2

我創建了一個列表視圖使用JSON從服務器檢索數據並顯示列表視圖中的信息,我嘗試檢查ID是否通過單擊列表將顯示快餐欄成功傳遞到適配器,但我不知道如何將ID傳遞到列表視圖。這是我的代碼。如何通過ID傳遞給其他活動,如果我的列表視圖是由JSON對象創建時點擊

@Override 
protected void onPostExecute(Integer integer) { 
    super.onPostExecute(integer); 

    if(integer == 1) 
    { 
     //ADAPTER 
     ArrayAdapter<String> adapter=new ArrayAdapter<String>(c,android.R.layout.simple_list_item_1,players); 

     //ADAPT TO LISTVIEW 
     lv.setAdapter(adapter); 

     //LISTENET 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Snackbar.make(view,players.get(position),Snackbar.LENGTH_SHORT).show(); 
      } 
     }); 

    }else 
    { 
     Toast.makeText(c,"Unable to Parse",Toast.LENGTH_SHORT).show(); 
    } 

    pd.dismiss(); 
} 

//PARSE RECEIVED DATA 
private int parse() 
{ 
    try 
    { 
     //ADD THAT DATA TO JSON ARRAY FIRST 
     JSONArray ja=new JSONArray(data); 

     //CREATE JO OBJ TO HOLD A SINGLE ITEM 
     JSONObject jo=null; 

     players.clear(); 

     //LOOP THRU ARRAY 
     for(int i=0;i<ja.length();i++) 
     { 
      jo=ja.getJSONObject(i); 

      //RETRIOEVE NAME 
      String name=jo.getString("campaign_name"); 
      String id=jo.getString("campaign_id"); 

      //ADD IT TO OUR ARRAYLIST 
      players.add(name); 
     } 

     return 1; 

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

    return 0; 
} 

這是輸出

enter image description here

+0

Toast.makeText(getApplicationContext(),將String.valueOf(ID [位置]),Toast.LENGTH_LONG).show(); – gaurang

回答

1

以同樣的方式創建players ArrayList中的campaign_name,創造campaign_id附加存儲的所有ID在它多了一個ArrayList中。

onItemClick方法使用campaign_id的ArrayList的點擊項目編號:

創建的ArrayList:

ArrayList<Integer> arrCampaignID=new ArrayList<Integer>(); 

更改parse()爲:

 String id=jo.getString("campaign_id"); 

     //ADD IT TO OUR ARRAYLIST 
     players.add(name); 
     arrCampaignID.add(id); 

2.onItemClick使用arrCampaignID獲得選定的廣告系列ID:

@Override 
public void onItemClick(AdapterView<?> parent,View view,int position,long id) { 
     String str_compaign_id= arrCampaignID.get(position);   
} 

注意,你也可以做到這一點通過創建名稱和ID屬性的自定義類的對象,但在這種情況下,你需要創建一個自定義適配器通過擴展ArrayAdapter。

2

創建一個模型類運動與領域ID,並覆蓋的toString返回任何你想要在列表視圖中顯示(在你的情況名)

合格名單運動,而不是在適配器字符串列表

ArrayAdapter<Campaign> adapter=new ArrayAdapter<Campaign>(..)` 

在parse方法,

Campaign campaign = new Campaign() 
campaign.name=jo.getString("campaign_name"); 
campaign.id=jo.getString("campaign_id"); 
players.add(campaign);` 

最後,onItemclick

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
Campaign item =  parent.getAdapter().getItem(position) 
Snackbar.make(view,item.id +" "+item.name,Snackbar.LENGTH_SHORT).show(); 
} 
+0

沒有創建自定義適配器,這將不起作用 –

+0

如果要求只是在列表視圖中顯示單個文本,則不需要創建自定義適配器。ArrayAdapter類可以使用任意Object而不只是String class – oks16

相關問題