2015-10-17 104 views
0

好吧,以下是我的ParseQuery。如何在這種情況下使用Collections.shuffle()以隨機順序顯示大部分(但不是全部)記錄?例如,我有一個特定的記錄,我希望總是顯示在列表的頂部,但我希望除特定記錄以外的所有內容以隨機順序顯示在其下方。以隨機順序顯示一些查詢記錄(Parse.com)

我不想設置兩個不同的ArrayList,在一箇中顯示一個特定的記錄,而在另一箇中顯示一個特定的記錄,但這總是一個選項。

我可以按照某種方式執行某些操作,例如從基於其objectId的shuffle中刪除特定記錄嗎?

brandlist = new ArrayList<SuggestedBrand>(); 
     try { 
      // Locate the class table named "SuggestedUser" in Parse.com 
      ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
        "SuggestedBrand"); 

      ob = query.find(); 
      Collections.shuffle(ob); 
      for (ParseObject author : ob) { 
       ParseFile image = (ParseFile) author.get("brandImage"); 
       SuggestedBrand map = new SuggestedBrand(); 
       map.setRank((String) author.get("author")); 
       map.setUsername((String) author.get("username")); 
       map.setFlag(image.getUrl()); 
       map.setUserID((String) author.get("userId")); 
       brandlist.add(map); 
      } 
     } catch (ParseException e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return null; 
    } 

回答

1

你爲什麼不只是僅僅使用Collections.shuffle(...)之前刪除一個有趣的項目(並將其存儲在一個變量),以及使用該方法插入的項目回ArrayList在它的頂部後?

+0

我知道它的工作原理,但是如何設置它,讓有趣的項目位於列表頂部(請參閱下面的答案)? – drearypanoramic

+1

你可以使用List的['add(int location,E object)'](http://developer.android.com/reference/java/util/List.html#add(int,%20E))方法','location'參數設置爲'0'。 –

0

這需要感興趣的項目並將其與隨機化過程分開。然後它將它放置在列表的頂部:

@Override 
     protected Void doInBackground(Void... params) { 
      // Create the array 
      worldpopulationlist = new ArrayList<SuggestedUser>(); 
      try { 
       final ParseQuery<ParseObject> interesting = new ParseQuery<ParseObject>("SuggestedUser"); 
       interesting.whereEqualTo("userId", "pYYMsL9RWW"); 
       ParseObject interesting2 = interesting.getFirst(); 
       // Locate the class table named "SuggestedUser" in Parse.com 
       final ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
         "SuggestedUser"); 
       ob = query.find(); 
       ob.remove(interesting2); 
       Collections.shuffle(ob); 
       ob.add(interesting2); 
       Collections.reverse(ob); 
       for (ParseObject author : ob) { 
        ParseFile image = (ParseFile) author.get("brandImage"); 
        SuggestedUser map = new SuggestedUser(); 
        map.setRank((String) author.get("author")); 
        map.setUsername((String) author.get("username")); 
        map.setFlag(image.getUrl()); 
        map.setUserID((String) author.get("userId")); 
        worldpopulationlist.add(map); 
       } 
      } catch (ParseException e) { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } 
      return null; 
     }