简体   繁体   English

在 Recyclerview 中显示来自 Firebase 的数据,按用户名过滤 - 如何?

[英]Show data from Firebase in Recyclerview, filtered on username - How to?

With the following line of code I'm able to show the data under "results" of the User "Hendrik".使用以下代码行,我可以在用户“Hendrik”的“结果”下显示数据。

Query query = FirebaseDatabase.getInstance().getReference("users/Hendrik/results");

But what I want, is to show the data under "results" according to which user is logged in. I think I'm supposed to work with FirebaseAuth to check which user is currently logged in?但我想要的是根据哪个用户登录在“结果”下显示数据。我想我应该使用 FirebaseAuth 来检查当前登录的用户? I'm not really sure tho, anyone has any suggestions?我不太确定,有人有什么建议吗?

Database tree数据库树

在此处输入图像描述

Inside my fragment在我的片段里面

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

My adapter我的适配器

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

I think I'm supposed to work with FirebaseAuth to check which user is currently logged in?我想我应该使用 FirebaseAuth 来检查当前登录的用户?

Yes.是的。 FirebaseAuth will generate unique ids for every user then you can structure your data like Users->uid-> then details FirebaseAuth 将为每个用户生成唯一的 id,然后您可以像Users->uid-> then details

After that you could do this:之后你可以这样做:

But what I want, is to show the data under "results" according to which user is logged in但我想要的是根据哪个用户登录在“结果”下显示数据

by get uid of the current logged in user from FirebaseAuth and your database query will look like this:通过从 FirebaseAuth 获取当前登录用户的uid ,您的数据库查询将如下所示:

Query query = FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("result");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM