У меня есть 2 кнопки. По нажатию кнопки я решаю, какую базу данных выбрать для повторного просмотра. Как, например, при нажатии кнопки B1, я установил базу данных DB1 для повторного просмотра. Я использую firebaserecycleradapter. Проблема в том, что getAdapter(). NotifyDataSetChanged() для утилита-ревизора, похоже, не работает с определением FirebaseRecyclerAdapter, а работает с пользователем-заполнителем. Но так как я установил запрос на определение FirebaseRecyclerAdapter, в конце выбираемая база данных не изменяется при нажатии кнопки.
Вот некоторый код:
//global declaration
FirebaseRecyclerAdapter<HomeBlog, BlogViewHolder> firebaseRecyclerAdapter;
//FirebaseRecyclerAdapter part:
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<HomeBlog, BlogViewHolder>(
HomeBlog.class,
R.layout.profile_row,
BlogViewHolder.class,
query
//the query is the Firebase database that I want at a time.
//since getAdapter().notifyDataSetChanged() not reloading from here. query remains same.
)
{
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, HomeBlog model, int position) {
final String post_key = getRef(position).getKey();
final String postPosition = String.valueOf(position);
//getAdapter().notifyDataSetChanged() seems to load in populateviewholder though.
//this I checked using Toast.
viewHolder.setImage(post_key);
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//other code
}
});
}
};
mBlogList.setAdapter(firebaseRecyclerAdapter);
//one button click example:
grid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//changing the query
query = mDatabase.orderByChild("UserId").equalTo(userId);
mBlogList.setAdapter(firebaseRecyclerAdapter);
mBlogList.getAdapter().notifyDataSetChanged();
}
});
Я хочу убедиться, что часть определения firebaserecycleradapter также загружается, когда я вызываю getAdapter(). NotifyDataSetChanged(). Потому что он содержит запрос. Есть какой-то подход к этому? Или я делаю совершенно неправильный процесс?
После вызова setAdapter()
вы можете использовать notifyDataSetChanged()
на этом адаптере. Пример:
mBlogList.setAdapter(firebaseRecyclerAdapter);
firebaseRecyclerAdapter.notifyDataSetChanged();
Тогда ваши данные будут обновлены.