我想用当前与它们关联ListView
的一个Array
或一个ArrayList
不同的 s 填充 a 。我认为这需要对当前用户进行某种查询,但是我只是不确定如何返回角色以及如何将它们返回到我可以用来填充. 我知道您可以使用以下方法获取当前用户:ParseRole
ParseUser
Array
ArrayList
ListView
ParseUser.getCurrentUser();
但是,我似乎无法从那里找到您如何建立用户已分配的角色。
编辑:
我现在也尝试过这个:
ParseQuery<ParseRole> query = ParseRole.getQuery();
query.whereEqualTo("users", ParseUser.getCurrentUser().getObjectId());
query.findInBackground(new FindCallback<ParseRole>() {
@Override
public void done(List<ParseRole> objects, ParseException e) {
if(e == null) {
Toast.makeText(getApplicationContext(), objects.size() + "", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "ERROR", Toast.LENGTH_SHORT).show();
}
}
});
但我似乎仍然无法得到任何与此相关的工作。我目前已经尝试了所有我能想到的东西,但并没有真正取得任何进展,因为“对象”的大小仍然始终为 0。
提前致谢!
回答:
在实现 Marius Falkenberg Waldal 的答案背后的逻辑并将其移植到 Android 之后,我终于找到了适合我情况的解决方案。我决定发布它以防将来对任何人有所帮助:
ParseQuery<ParseRole> roleQuery = ParseRole.getQuery();
List<ParseRole> allRoles = null;
try {
allRoles = roleQuery.find();
} catch (ParseException e) {
e.printStackTrace();
}
userRoles = new ArrayList<ParseRole>();
userRolesNames = new ArrayList<String>();
for(ParseRole role : allRoles) {
ParseQuery usersQuery = role.getRelation("users").getQuery();
usersQuery.whereEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
try {
if(usersQuery.count() > 0) {
userRoles.add(role);
userRolesNames.add(role.getName().toString());
}
} catch (ParseException e) {
e.printStackTrace();
}
}
GroupAdapter adapter = new GroupAdapter(this, userRolesNames);
workspaces.setAdapter(adapter);