以随机顺序显示一些查询记录(Parse.com)
Displaying some query records in random order (Parse.com)
好的,下面是我的 ParseQuery。在这种情况下,如何使用 Collections.shuffle() 以随机顺序显示大部分但不是所有记录?例如,我有一个特定的记录,我希望它始终显示在列表的顶部,但我希望除该特定记录之外的所有内容都以随机顺序显示在它下面。
我不希望设置两个不同的 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;
}
为什么不在使用 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;
}
好的,下面是我的 ParseQuery。在这种情况下,如何使用 Collections.shuffle() 以随机顺序显示大部分但不是所有记录?例如,我有一个特定的记录,我希望它始终显示在列表的顶部,但我希望除该特定记录之外的所有内容都以随机顺序显示在它下面。
我不希望设置两个不同的 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;
}
为什么不在使用 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;
}