2012-11-17 33 views
0

如果此項目不在列表中,我想在我的Android小部件中添加一個新項目。只有在列表視圖中才添加項目

我試圖用包含()方法,但它仍然不起作用。

實際上,我得到一個JSON對象,並且對於每個JSON對象,我想測試列表中是否存在與此JSON對象相對應的項目。

如果是,則不做任何事情,如果否,則將該項目添加到列表頂部。

這裏是我的代碼:

//parsing data 
     String titre, url, site, ancienprix, nouveauprix, temperature, pseudo, categorie, dealtermine, date, id; 

     try{ 
      jArray = new JSONArray(result); 
      JSONObject json_data=null; 

      SharedPreferences setNbDeal = PreferenceManager.getDefaultSharedPreferences(mContext); 
      String nbDeal = setNbDeal.getString("nbDeal", "30"); 

      int nbDeals = Integer.parseInt(nbDeal); 

      for(int i=0;i<nbDeals;i++){ 
       json_data = jArray.getJSONObject(i); 
       titre=json_data.getString("titre"); 
       url=json_data.getString("url"); 
       site=json_data.getString("site"); 
       ancienprix=json_data.getString("ancienprix"); 
       nouveauprix=json_data.getString("nouveauprix"); 
       dealtermine=json_data.getString("dealtermine"); 
       temperature=json_data.getString("temperature"); 
       pseudo=json_data.getString("pseudo"); 
       categorie=json_data.getString("categorie"); 
       date=json_data.getString("date"); 
       id=json_data.getString("id"); 

       WidgetItem currentItem = new WidgetItem(titre, url, site, ancienprix, nouveauprix, dealtermine, temperature, pseudo, categorie, date); 

       if (mWidgetItems.contains(currentItem)){ 
        break; 
       } else { 
        mWidgetItems.add(currentItem); 
       } 
      } 
     } 

這裏是申報代碼mWidgetItem:

private List<WidgetItem> mWidgetItems = new ArrayList<WidgetItem>(); 

這裏是我的Widget項目類的代碼:

public class WidgetItem { 
    public String titre, url, ancienprix, nouveauPrix, temperature, site, submitter, categorie, dealTermine, date; 


    public WidgetItem(String titre, String url, String site, String ancienprix, String nouveauPrix, String dealTermine, String temperature, String submitter, String categorie, String date) { 
     this.titre = titre; 
     this.url = url; 
     this.site = site; 
     this.ancienprix = ancienprix; 
     this.nouveauPrix = nouveauPrix; 
     this.dealTermine = dealTermine; 
     this.temperature = temperature; 
     this.submitter = submitter; 
     this.categorie = categorie; 
     this.date = date; 
    } 
} 
+0

您的'currentItem'是指向'WidgetItem'的指針,而不是'WidgetItem'本身。基本的Java。 – tolgap

+0

您可以發佈WidgetItem類的代碼以及聲明mWidgetItems變量的代碼嗎? – combinatorics

+1

你需要'WidgetItem'類中的'equal()'方法來給你一種比較兩個WidgetItem對象的方法。 – iTurki

回答

0

你可以在將所有元素添加到列表中後使用此方法(刪除重複項):

private ArrayList<WidgetItem> getUniqueElements(Collection<WidgetItem> values) 
{ 
    return new ArrayList<WidgetItem>(new TreeSet<WidgetItem>(values)); 
} 
相關問題