Извлечение данных из Firebase в Nested Recycler View не работает должным образом - PullRequest
0 голосов
/ 09 марта 2019

Я хочу сделать клон Play Store, загрузка данных из Firebase не работает правильно ... Вы можете понять из скриншота, в основном, в каждой категории есть ВСЕ приложения

Красный - AppModel

Зеленый - ParentModel (категории)

Синий - Все приложения

App Screenshot

База данных:

DB Schema

Я добавил только ту часть, которая важна, если вам нужно больше, но я не думаю, что это так, попросите об этом. Большое спасибо!

ParentModel - это объект, который принимает строку в качестве имени категории и списка массивов AppModel

mDatabaseRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshotBig) {
                for (final String s : mCategoryStrings) { //for every string is the categories array
                    final ParentModel parentModel = new ParentModel();
                    apps = new ArrayList<>();
                    DatabaseReference smallRef = mDatabaseRef.child(s); //HERE: Geting the category db reference for each s
                    smallRef.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                                AppModel appModel = postSnapshot.getValue(AppModel.class); //getting it
                                apps.add(appModel);
                                parentModel.setTitle(s);
                                parentModel.setArrayList(apps);
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {
                            Toast.makeText(getContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                        }
                    });

                    parentModel.setArrayList(apps); //setting the array
                    mParents.add(parentModel); //adding it to the parents array list
                }//END OF String s FOR


                mAdapter = new ParentAdapter(getContext(), mParents);
                mRecyclerView.setAdapter(mAdapter);
            }//END OF BIG ON DATA CHANGE


            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(getContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
...