查询或创建算法以关联 Firebase 数据库上 main 的 2 个子项?
Query or create an algorithm to correlate between 2 childs of main on Firebase Database?
我想把艺术和最爱联系起来。 Favorite 的 children 是用户唯一标识。我想专门这样做:将艺术 children 显示为 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();
}
您所拥有的称为索引数据,其中您的 /favorite/$uid
是 /art/$artid
下项目的索引。要使用 FirebaseUI 显示此内容,请查看 using FirebaseUI with indexed data.
最重要的是,你需要通过调用setIndexedQuery
传入两个queries/references到适配器:一个对主要实体的引用,一个query/reference对索引.
在你的情况下看起来像:
myRefArts = firebaseDatabase.getReference("art");
myFavoritesIndex = firebaseDatabase.getReference("favorites").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
favOptions = new FirebaseRecyclerOptions.Builder<Art>()
.setIndexedQuery(myFavoritesIndex, myRefArts, Art.class).build();
我想把艺术和最爱联系起来。 Favorite 的 children 是用户唯一标识。我想专门这样做:将艺术 children 显示为 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();
}
您所拥有的称为索引数据,其中您的 /favorite/$uid
是 /art/$artid
下项目的索引。要使用 FirebaseUI 显示此内容,请查看 using FirebaseUI with indexed data.
最重要的是,你需要通过调用setIndexedQuery
传入两个queries/references到适配器:一个对主要实体的引用,一个query/reference对索引.
在你的情况下看起来像:
myRefArts = firebaseDatabase.getReference("art");
myFavoritesIndex = firebaseDatabase.getReference("favorites").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
favOptions = new FirebaseRecyclerOptions.Builder<Art>()
.setIndexedQuery(myFavoritesIndex, myRefArts, Art.class).build();