#android #firebase #firebase-realtime-database #viewmodel #android-jetpack
#Android #firebase #firebase-база данных в реальном времени #viewmodel #android-реактивный ранец
Вопрос:
Я пытаюсь отделить свою базу данных от моего пользовательского контроллера с помощью ViewModel и предотвратить постоянное использование данных. Я искал решение в течение нескольких дней без какого-либо прогресса. Я использую Firebase RecyclerAdapter в своем приложении, и код работает хорошо, но я не знаю, как реализовать LiveData Observer с помощью RecyclerAdapter. любой пример приложения или фрагмент кода окажет мне большую помощь.
Вот пример кода из моего фрагмента
private void fetchValues() {
Query query1 = mDatabaseReference;
FirebaseRecyclerOptions<Course> options = new FirebaseRecyclerOptions.Builder<Course>()
.setQuery(query1, new SnapshotParser<Course>() {
@NonNull
@Override
public Course parseSnapshot(@NonNull DataSnapshot snapshot) {
return new Course(snapshot.child("course_title").getValue().toString(),
snapshot.child("course_code").getValue().toString(),
snapshot.child("course_lecturer").getValue().toString());
}
})
.build();
mFirebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Course, CourseViewHolder>(options){
@NonNull
@Override
public CourseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mCourseItemBinding = CourseItemBinding.inflate(LayoutInflater.from(getActivity()), parent, false);
View view = mCourseItemBinding.getRoot();
return new CourseViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull CourseViewHolder holder, int position, Course course) {
holder.bind(course);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity(), String.valueOf(position), Toast.LENGTH_LONG).show();
}
});
}
};
mRecyclerView.setAdapter(mFirebaseRecyclerAdapter);
}
Комментарии:
1. Как я вижу, вы используете библиотеку Firebase-UI, которая предоставляет обновления в режиме реального времени, но я не вижу никакого кода, связанного с ViewModel или LivedData в том, чем вы уже поделились.
2. Как я уже сказал, я не знаю, как это сделать, используя Firebase-UI. Любые советы окажут большую помощь
3. Насколько я знаю, не стоит смешивать шаблон MVVM и Firebase-UI. Вы можете использовать любой из них. Используйте Firebase-UI и реализуйте во фрагменте или activity или извлекайте данные отдельно из firebase в view model и передавайте их во фрагмент или activity с помощью наблюдателей.