使用以下代码行,我可以在用户“Hendrik”的“结果”下显示数据。
Query query = FirebaseDatabase.getInstance().getReference("users/Hendrik/results");
但我想要的是根据登录的用户显示“结果”下的数据。我想我应该使用 FirebaseAuth 来检查当前登录的是哪个用户?我不太确定,有人有什么建议吗?
数据库树
在我的片段中
private void setUpRecyclerView() {
Query query = FirebaseDatabase.getInstance().getReference("users/Hendrik/results");
FirebaseRecyclerOptions<Results> options = new FirebaseRecyclerOptions.Builder<Results>()
.setQuery(query, Results.class)
.build();
adapter = new ResultAdapter(options);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(adapter);
}
@Override
public void onStart() {
super.onStart();
if (adapter != null) {
adapter.startListening();
}
}
@Override
public void onStop() {
super.onStop();
if (adapter != null) {
adapter.stopListening();
}
}
我的适配器
public class ResultAdapter extends FirebaseRecyclerAdapter<Results, ResultAdapter.ResultViewHolder> {
public ResultAdapter(@NonNull FirebaseRecyclerOptions<Results> options){
super(options);
}
@Override
public void onBindViewHolder(@NonNull ResultViewHolder holder, int position, @NonNull Results model) {
holder.datum.setText(model.getDatum());
}
@NonNull
@Override
public ResultViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.result_display_layout, parent, false);
return new ResultViewHolder(v);
}
public static class ResultViewHolder extends RecyclerView.ViewHolder{
TextView datum;
ImageView resultaat1, resultaat2, resultaat3, resultaat4;
public ResultViewHolder(@NonNull View itemView){
super(itemView);
datum = itemView.findViewById(R.id.datum);
resultaat1 = itemView.findViewById(R.id.schietResultaat1);
resultaat2 = itemView.findViewById(R.id.schietResultaat2);
resultaat3 = itemView.findViewById(R.id.schietResultaat3);
resultaat4 = itemView.findViewById(R.id.schietResultaat4);
}
}
}
答案 0 :(得分:1)
我想我应该使用 FirebaseAuth 来检查当前登录的是哪个用户?
是的。 FirebaseAuth 将为每个用户生成唯一的 ID,然后您可以像 Users->uid-> then details
之后你可以这样做:
<块引用>但我想要的是根据登录的用户显示“结果”下的数据
通过从 FirebaseAuth 获取当前登录用户的 uid
,您的数据库查询将如下所示:
Query query = FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("result");