Запросить или создать алгоритм для корреляции между двумя дочерними элементами основного в базе данных Firebase? - PullRequest
0 голосов
/ 14 мая 2019

Я хочу соотнести искусство и любимое.Дети Фаворита - это уникальный идентификатор пользователя.Я хочу сделать это специально: показывать арт-детей как 01,02,03,46,47,48,50,66,106 (эти значения могут быть изменены).
Вот моя общая структура базы данных:

Main:

Main

Art:

Art

Fav:

Fav А вот мой код для получения идеи:

private void callFavorites () {

        myRefArts = firebaseDatabase.getReference("art"); 

        favOptions = new FirebaseRecyclerOptions.Builder<Art>()
                .setQuery(myRefArts, Art.class).build();

        favAdapter = new FirebaseRecyclerAdapter<Art, ArtViewHolder>(favOptions) {
            @Override
            protected void onBindViewHolder(@NonNull ArtViewHolder holder, int position, @NonNull Art model) {

                holder.textViewArtName.setText(model.getArt_name());

                Picasso.with(getBaseContext()).load(model.getArt_image())
                        .into(holder.imageViewArtImage);

                holder.setItemClickListener(new ItemClickListener() {
                    @Override
                    public void onClick(View view, int position, boolean isLongClick) {
                        Toast.makeText(FavoriteActivity.this, "Henüz yapılmadı", Toast.LENGTH_SHORT).show();
                    }
                });

            }

            @NonNull
            @Override
            public ArtViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

                View view = LayoutInflater.from(viewGroup.getContext())
                        .inflate(R.layout.card_design_art,viewGroup,false);

                return new ArtViewHolder(view);
            }
        };

        rv.setAdapter(favAdapter);
        favAdapter.startListening();

    }

1 Ответ

0 голосов
/ 14 мая 2019

То, что у вас есть, называется индексированными данными, где ваш /favorite/$uid является индексом для элементов под /art/$artid.Чтобы отобразить это с помощью FirebaseUI, проверьте с помощью FirebaseUI с индексированными данными .

. Самое важное, что вам нужно передать два запроса / ссылки на адаптер, вызвав setIndexedQuery:одна ссылка на основные объекты и один запрос / ссылка на индекс.

В вашем случае это будет выглядеть примерно так:

myRefArts = firebaseDatabase.getReference("art"); 
myFavoritesIndex = firebaseDatabase.getReference("favorites").child(FirebaseAuth.getInstance().getCurrentUser().getUid());

favOptions = new FirebaseRecyclerOptions.Builder<Art>()
        .setIndexedQuery(myFavoritesIndex, myRefArts, Art.class).build();
...