具有多个参数的 Quickblox getUsersByFilter
Quickblox getUsersByFilter with multiple parameters
如何在QBUsers Request中进行多重过滤?例如,现在我请求登录等于 9634 的用户。
public void getUsers(){
QBPagedRequestBuilder pagedRequestBuilder = new QBPagedRequestBuilder();
pagedRequestBuilder.setPage(1);
pagedRequestBuilder.setPerPage(100);
ArrayList<String> userId = new ArrayList();
userId.add("9634");
QBUsers.getUsersByFilter(userId, "string login eq ", pagedRequestBuilder, new QBEntityCallback<ArrayList<QBUser>>() {
@Override
public void onSuccess(ArrayList<QBUser> users, Bundle bundle) {
for (int i = users.size() - 1; i >= 0; --i) {
QBUser user = new QBUser();
user.setLogin(users.get(i).getLogin());
user.setId(users.get(i).getId());
user.setCustomData(users.get(i).getCustomData());
userslist.add(user);
adapter.notifyDataSetChanged();
}
}
@Override
public void onError(QBResponseException e) {
}
});
}
我应该更改什么才能基于多个过滤器发出请求?谢谢
好的,在阅读 QuickBlox 文档后,我发现在查询用户时可以只使用一个过滤器,而在查询 CustomObjects 时可以使用多个过滤器。因此,正如我建议的那样,通过自定义参数过滤用户的唯一方法是接收 QBUsers 数组并手动过滤它。
private void getUsers(int page, final String... params){
QBPagedRequestBuilder pagedRequestBuilder = new QBPagedRequestBuilder();
pagedRequestBuilder.setPage(page);
pagedRequestBuilder.setPerPage(100);
ArrayList<Integer> userId = new ArrayList();
userId.add(8776861);
QBUsers.getUsersByFilter(userId, "number id ne ", pagedRequestBuilder, new QBEntityCallback<ArrayList<QBUser>>() {
@Override
public void onSuccess(ArrayList<QBUser> users, Bundle bundle) {
for (int i = users.size() - 1; i >= 0; --i) {
QBUser user = new QBUser();
user.setLogin(users.get(i).getLogin());
user.setId(users.get(i).getId());
user.setCustomData(users.get(i).getCustomData());
if (Utils.userdataint(users.get(i).getCustomData(),"age")>9&&
Utils.userdata(users.get(i).getCustomData(),"city").contains(params[0])
){
userslist.add(user);
}
adapter.notifyDataSetChanged();
}
}
@Override
public void onError(QBResponseException e) {
}
});}
也可以使用 getUsersByTags 来接收具有多个标签的用户,但在大多数情况下这不是答案。
如何在QBUsers Request中进行多重过滤?例如,现在我请求登录等于 9634 的用户。
public void getUsers(){
QBPagedRequestBuilder pagedRequestBuilder = new QBPagedRequestBuilder();
pagedRequestBuilder.setPage(1);
pagedRequestBuilder.setPerPage(100);
ArrayList<String> userId = new ArrayList();
userId.add("9634");
QBUsers.getUsersByFilter(userId, "string login eq ", pagedRequestBuilder, new QBEntityCallback<ArrayList<QBUser>>() {
@Override
public void onSuccess(ArrayList<QBUser> users, Bundle bundle) {
for (int i = users.size() - 1; i >= 0; --i) {
QBUser user = new QBUser();
user.setLogin(users.get(i).getLogin());
user.setId(users.get(i).getId());
user.setCustomData(users.get(i).getCustomData());
userslist.add(user);
adapter.notifyDataSetChanged();
}
}
@Override
public void onError(QBResponseException e) {
}
});
}
我应该更改什么才能基于多个过滤器发出请求?谢谢
好的,在阅读 QuickBlox 文档后,我发现在查询用户时可以只使用一个过滤器,而在查询 CustomObjects 时可以使用多个过滤器。因此,正如我建议的那样,通过自定义参数过滤用户的唯一方法是接收 QBUsers 数组并手动过滤它。
private void getUsers(int page, final String... params){
QBPagedRequestBuilder pagedRequestBuilder = new QBPagedRequestBuilder();
pagedRequestBuilder.setPage(page);
pagedRequestBuilder.setPerPage(100);
ArrayList<Integer> userId = new ArrayList();
userId.add(8776861);
QBUsers.getUsersByFilter(userId, "number id ne ", pagedRequestBuilder, new QBEntityCallback<ArrayList<QBUser>>() {
@Override
public void onSuccess(ArrayList<QBUser> users, Bundle bundle) {
for (int i = users.size() - 1; i >= 0; --i) {
QBUser user = new QBUser();
user.setLogin(users.get(i).getLogin());
user.setId(users.get(i).getId());
user.setCustomData(users.get(i).getCustomData());
if (Utils.userdataint(users.get(i).getCustomData(),"age")>9&&
Utils.userdata(users.get(i).getCustomData(),"city").contains(params[0])
){
userslist.add(user);
}
adapter.notifyDataSetChanged();
}
}
@Override
public void onError(QBResponseException e) {
}
});}
也可以使用 getUsersByTags 来接收具有多个标签的用户,但在大多数情况下这不是答案。