Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查询或创建一个算法,以便在Firebase数据库上的两个main子级之间进行关联?_Java_Android_Firebase_Firebase Realtime Database_Firebaseui - Fatal编程技术网

Java 查询或创建一个算法,以便在Firebase数据库上的两个main子级之间进行关联?

Java 查询或创建一个算法,以便在Firebase数据库上的两个main子级之间进行关联?,java,android,firebase,firebase-realtime-database,firebaseui,Java,Android,Firebase,Firebase Realtime Database,Firebaseui,我想把艺术和最爱联系起来。Favorite的子项是用户唯一id。我想特别做这件事:将艺术子项显示为01,02,03,46,47,48,50,66106这些值是可变的。 以下是我的通用数据库结构: 主要内容: 艺术: Fav: 下面是我的代码,用于获取想法: private void callFavorites () { myRefArts = firebaseDatabase.getReference("art"); favOptions = new Fi

我想把艺术和最爱联系起来。Favorite的子项是用户唯一id。我想特别做这件事:将艺术子项显示为01,02,03,46,47,48,50,66106这些值是可变的。 以下是我的通用数据库结构:

主要内容:

艺术:

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

    }

您拥有的数据称为索引数据,其中/favorite/$uid是/art/$artid下项目的索引。要使用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();

那么,基本上预期的restul是什么呢?请给我们举个例子,非常感谢。你真的帮了我很多。谢谢。