2

final ListView opponentsList = (ListView) view.findViewById(R.id.opponentsList);
        ArrayList<Integer> userIds = new ArrayList<>();
        QBUsers.getUsersByIDs(userIds, new QBPagedRequestBuilder(userIds.size(), 1), new QBEntityCallbackImpl<ArrayList<QBUser>>() {
            @Override
            public void onSuccess(ArrayList<QBUser> results, Bundle params) {
                super.onSuccess(results,params);
                List<QBUser> users = new ArrayList<>(results.size());
                for (QBUser result : results)
                {
                    // There mus be a more efficient, or at least better looking, way of doing this...
                    QBUser user = new QBUser();
                    user.setId(result.getId());
                    user.setLogin(result.getFullName());
                    users.add(user);
                }

                int i = searchIndexLogginedUser(users);
                if (i >= 0)
                    users.remove(i);

                // Prepare users list for simple adapter.
                //
                opponentsAdapter = new OpponentsAdapter(getActivity(), users);
                opponentsList.setAdapter(opponentsAdapter);
            }
        });
        progresDialog.dismiss();

使用 android 中的 quickblox 示例从 QBUsers.getUsersByIDs() 获取用户数据时不使用 onSuccess 方法?

4

1 回答 1

2

它没有显示,因为您没有在查询中提供任何值:

ArrayList<Integer> userIds = new ArrayList<>();

在查询可以搜索以查看用户是否存在并在 onSuccess 方法中返回 QBUser 之前,您应该在此列表中添加一个或多个 id。正确做法的一个例子是:

ArrayList<Integer> userIds = new ArrayList<>();
userIds.add(123456);
QBUsers.getUsersByIDs(userIds, new QBPagedRequestBuilder(userIds.size(), 1), new QBEntityCallbackImpl<ArrayList<QBUser>>() {
        @Override
        public void onSuccess(ArrayList<QBUser> results, Bundle params) {
            super.onSuccess(results,params);
            List<QBUser> users = new ArrayList<>(results.size());
            for (QBUser result : results)
            {
                // There mus be a more efficient, or at least better looking, way of doing this...
                QBUser user = new QBUser();
                user.setId(result.getId());
                user.setLogin(result.getFullName());
                users.add(user);
            }

            int i = searchIndexLogginedUser(users);
            if (i >= 0)
                users.remove(i);

            // Prepare users list for simple adapter.
            //
            opponentsAdapter = new OpponentsAdapter(getActivity(), users);
            opponentsList.setAdapter(opponentsAdapter);
        }
    });
    progresDialog.dismiss();

如果存在具有此 id 的用户,则它将在 onSuccess() 方法中返回该用户。希望这可以帮助。

于 2016-02-08T22:55:35.260 回答