Синхронизация обновлений базы данных комнат между фрагментами в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Синхронизация обновлений базы данных комнат между фрагментами в Android

Сообщение Anonymous »

Я разрабатываю приложение для просмотра фильмов, в котором пользователи могут добавлять фильмы в список избранных с помощью базы данных номеров. У меня есть два фрагмента: один для добавления фильмов и другой для отображения списка. Проблема в том, что когда пользователь добавляет новый фильм, список в ListFragment не обновляется в режиме реального времени. Обновление отображается только после повторного открытия приложения.
Вот соответствующий код из моего ListFragment:

Код: Выделить всё

public class ListFragment extends Fragment {

ImageView listTitleImage;
RecyclerView recyclerView;

List dataList = new ArrayList();
LinearLayoutManager linearLayoutManager;
RoomDB database;
RecyclerViewFavoritesAdapter adapter;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View v = inflater.inflate(R.layout.fragment_list,container,false);
listTitleImage = v.findViewById(R.id.listTitleImage);
recyclerView = v.findViewById(R.id.recyclerViewFavorites);

database = RoomDB.getInstance(v.getContext());

dataList = database.mainDao().getAll();

linearLayoutManager = new LinearLayoutManager(v.getContext());

recyclerView.setLayoutManager(linearLayoutManager);

adapter = new RecyclerViewFavoritesAdapter(v.getContext(),dataList);

recyclerView.setAdapter(adapter);

return v;
}
}

А вот метод добавления фильмов в базу данных (onMenuItemClick):

Код: Выделить всё

@Override
public boolean onMenuItemClick(MenuItem item) {

if(item.getItemId() == R.id.menuAdd){

int movie_id = resultList.get(pos).getMovieId();
String title = resultList.get(pos).getTitle();
String posterpath = resultList.get(pos).getPoster_path();

database = RoomDB.getInstance(context);

MainData mainData = new MainData();

mainData.setMovie_id(movie_id);
mainData.setMovie_name(title);
mainData.setMovie_poster(posterpath);

int movie_id_in_database = database.mainDao().get_movie_id(movie_id);

if(movie_id_in_database == 0){
database.mainDao().insert(mainData);
} else{
Toast.makeText(context, "You already have that movie in list !", Toast.LENGTH_SHORT).show();
}

return true;

}
else if(item.getItemId() == R.id.menuShowDetails){

int movieId = resultList.get(pos).getMovieId();
// Intent intent1 = new Intent(context, MovieDetails.class);
// intent1.putExtra("movie_id",movieId);
// context.startActivity(intent1);
return true;

}
return false;
}
Вопросы:
  • Как синхронизировать обновления между ListFragment и фрагментом, в который добавляются фильмы База данных комнат?
  • Какой подход следует использовать, чтобы гарантировать, что RecyclerView в ListFragment обновляется сразу после добавления фильма, не требуя, чтобы приложение было вновь открыт?
Будем очень признательны за любые рекомендации или примеры кода!

Подробнее здесь: https://stackoverflow.com/questions/671 ... in-android
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»