У меня проблема с моим кодом. Я целый день пытался разрешить этот код, но не могу, не знаю, как это сделать. Проблема в том, что onDataChange () возвращает мне повторяющиеся значения. Я попытался добавить эту строку «addListenerForSingleValueEvent ()», а также отключить автономную устойчивость Firebase, написав «FirebaseDatabase.getInstance (). SetPersistenceEnabled (false);» но это не сработало. Я получаю дубликаты значений (см. Изображение ниже). Дублирует значения
Мой код для извлечения данных из Firebase:
@Override
public void onStart() {
super.onStart();
options = new FirebaseRecyclerOptions.Builder<Course>().setQuery(reference, Course.class).build();
adapter = new FirebaseRecyclerAdapter<Course, CourseViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final CourseViewHolder courseViewHolder, int i, @NonNull Course course) {
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds: dataSnapshot.getChildren()){
String course_name = ds.child("Course name").getValue().toString();
courseViewHolder.courseRealName.setText(course_name);
Log.d(TAG, course_name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@NonNull
@Override
public CourseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.create_course_view,parent, false);
CourseViewHolder viewHolder = new CourseViewHolder(v);
return viewHolder;
}
};
adapter.startListening();
recyclerView.setAdapter(adapter);
}
Код RecyclerView
@NonNull
@Override
public CourseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.create_course_view,parent, false);
CourseViewHolder viewHolder = new CourseViewHolder(v);
return viewHolder;
}
};
adapter.startListening();
recyclerView.setAdapter(adapter);
}
public static class CourseViewHolder extends RecyclerView.ViewHolder{
TextView courseName, courseRealName,numberOfStudent, realNumberOfStudents;
public CourseViewHolder(@NonNull View itemView) {
super(itemView);
courseName = itemView.findViewById(R.id.denCursList);
courseRealName = itemView.findViewById(R.id.realCourseName);
numberOfStudent = itemView.findViewById(R.id.numarStudentiInfo);
realNumberOfStudents = itemView.findViewById(R.id.numarRealStudenti);
}
}
Я жду ответ. Спасибо!