android - Android 中 Fragments 之间的 RoomDB 同步
问题描述
我有一个将数据存储在房间数据库中的应用程序。这是一个电影应用程序,当用户将新电影添加到他的列表时,它不会同步工作。当我关闭应用程序并再次打开时,列表将被更新。用户添加电影按钮在一个片段中,列表在另一个片段中。它们不在同一个片段中。它添加数据库没有问题,但我需要在这两个片段之间进行同步。
这是列表片段。
public class ListFragment extends Fragment {
ImageView listTitleImage;
RecyclerView recyclerView;
List<MainData> 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;
}
}
这是菜单单击方法,其中包括添加列表。
@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;
}
解决方案
推荐阅读
- javascript - Salesforce 应用程序上的错误:当我们只运行一次时,在桌子上查找元素工作正常。如果我们使用数据提供者对其他集合重复相同的操作
- r - 将变量定义为引导包引导代码的输出
- javascript - 确定承诺需要多长时间
- list - 使用prolog(地铁站)计算直接连接到给定站的站数
- javascript - 如何在 ccxt 中使用 fetchBalance() 参数
- go - 了解切片索引语义
- php - 如何使用 PHP Curl 检索 PayPal JSON 交易详情
- swift - Swift 包调用 /usr/bin/swift 错误并显示“无法打开 macho 文件...太多级别的符号链接”仅在从 Xcode 运行时
- openapi - 如何在 Open API (v3) 中对必填字段进行分组?
- python - 高效的python循环结构重复一次