【问题标题】:Query or create an algorithm to correlate between 2 childs of main on Firebase Database?查询或创建一个算法来关联 Firebase 数据库上 main 的 2 个子节点?
【发布时间】:2019-05-14 12:22:26
【问题描述】:

我想在艺术和最爱之间建立关联。最喜欢的孩子是用户唯一的 id。我想专门这样做:将艺术儿童显示为 01,02,03,46,47,48,50,66,106(这些值是可变的)。
这是我的一般数据库结构:

主要:

艺术:

最喜欢的:

这是我的想法的代码:

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();

    }

【问题讨论】:

  • 那么基本上预期的结果是什么?请给我们一个例子。

标签: java android firebase firebase-realtime-database firebaseui


【解决方案1】:

您所拥有的数据称为索引数据,其中您的/favorite/$uid/art/$artid 下项目​​的索引。要使用 FirebaseUI 显示此内容,请查看 using FirebaseUI with indexed data

最重要的是,您需要通过调用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();

【讨论】:

  • 非常感谢先生。你真的帮了我很多。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多