С помощью следующей строки кода я могу показать данные в разделе «Результаты» пользователя «Хендрик».
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);
}
}
}




Я думаю, что я должен работать с FirebaseAuth, чтобы проверить, какой пользователь в настоящее время вошел в систему?
Да. FirebaseAuth будет генерировать уникальные идентификаторы для каждого пользователя, после чего вы сможете структурировать свои данные, например Users->uid-> then details
После этого вы можете сделать это:
Но я хочу показать данные в разделе «результаты», в соответствии с которыми пользователь вошел в систему.
получить uid текущего вошедшего в систему пользователя из FirebaseAuth, и ваш запрос к базе данных будет выглядеть так:
Query query = FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("result");
После аутентификации вы можете получить идентификатор пользователя с помощью user_id = FirebaseAuth.getInstance().getCurrentUser().getUid();. Теперь вы можете установить такие данные, как FirebaseDatabase.getInstance().getReference("users").child(user_id).child("result").set(your_data);
Круто спасибо, буду разбираться. Новичок в Android, извините, что спрашиваю основные вещи.
Предположим, что у каждого пользователя есть поле с именем status со значениями A, B или C. Вам нужно выбрать только status = 'A'. Как вы можете это сделать? FirebaseDatabase.getInstance().getReference("пользователи").orderByChild("status").equalTo("R");
Должен ли я вручную изменить значения под
"users"на"uid", чтобы FirebaseAuth знал, что давать уникальный идентификатор?