Отображение некоторых записей запросов в случайном порядке (Parse.com)
Хорошо, так вот мой ParseQuery. Как я могу отображать большинство, но не все записи в случайном порядке, используя Collections.shuffle() в этом контексте? Например, у меня есть конкретная запись, которую я хочу всегда отображать вверху списка, но я хочу, чтобы все, кроме этой конкретной записи, отображалось в произвольном порядке под ней.
Я бы предпочел не создавать два разных ArrayLists, отображая одну конкретную запись в одной, а остальные в другой, но это всегда вариант.
Могу ли я сделать что-то вроде удаления конкретной записи из shuffle на основе ее objectId?
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;
}
2 ответа
Почему бы вам просто не удалить один интересный элемент (и сохранить его в переменной) непосредственно перед использованием Collections.shuffle(...)
и после использования метода вставьте элемент обратно в ArrayList
на вершине этого?
Это берет интересующий элемент и отделяет его от процесса рандомизации. Затем он помещает его в начало списка:
@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;
}