Как объединить 2 списка из разных обратных вызовов? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть обратный вызов , который я использую двумя способами, для получения лайков и посещений, которые получают данные из База данных реального времени .

 public interface ActionCallback {

        void setActionList(List<ActionModel> actionModels);

    }

Каждый из них имеет обратный вызов типа ActionCallback в качестве параметра метода.

private void getLikes(ActionCallback callback){
        realtimeReference.child("Likes").child(getUid()).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                List<ActionModel> actionModels = new ArrayList<>();
                for (DataSnapshot snapshot: dataSnapshot.getChildren()){
                    actionModels.add(new ActionModel(
                            Long.valueOf(snapshot.child("timestamp").getValue().toString()),
                            snapshot.getKey(),
                            "likes"));
                }
                callback.setActionList(actionModels);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {}
        });
    }

    private void getVisits(ActionCallback callback){
        realtimeReference.child("Visits").child(getUid()).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                List<ActionModel> actionModels = new ArrayList<>();
                for (DataSnapshot snapshot: dataSnapshot.getChildren()){
                    Long timestamp = Long.valueOf(snapshot.child("timestamp").getValue().toString());
                    String fromUid = snapshot.child("fromUid").getValue().toString();
                    actionModels.add(new ActionModel(timestamp, fromUid, "visits"));
                }
                callback.setActionList(actionModels);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {}
        });
    }

Мне нужно объединить списки из их обратных вызовов в методе getSortedList ()Я пытаюсь сделать это, но у меня это не работает, и я получаю только список getLikes ().

 public void getMergedActions(ActionCallback callback){
        List<ActionModel> actionModels = new ArrayList<>();
        getLikes(actionLikeModels -> {
            actionModels.addAll(actionLikeModels);
            getVisits(actionVisitModels -> actionModels.addAll(actionVisitModels));
            Collections.sort(actionModels, (e1, e2) -> Long.compare(e1.getTimestamp(), e2.getTimestamp()));
            callback.setActionList(actionModels);
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...