为了账号安全,请及时绑定邮箱和手机立即绑定

即使从服务器中删除后,数据仍显示在房间数据库中

即使从服务器中删除后,数据仍显示在房间数据库中

哔哔one 2023-04-26 16:53:31
我正在从服务器获取数据并保存在房间数据库中,然后从房间中将其显示在回收站视图中。数据完美地保存在房间数据库中并显示在回收站视图中。问题:当我从服务器数据库中删除一些数据时,之前保存的旧副本仍然存在于房间中。我想要什么:我不想在回收者视图中显示从服务器删除的数据。那么如何根据服务器响应更新房间数据库。这是我到目前为止所做的:UserDao.java@Daopublic interface UserDao {@Insert(onConflict = OnConflictStrategy.REPLACE)void Insert(User... users);@Query("SELECT * FROM Users")LiveData<List<User>> getRoomUsers();}User.java@Entity(tableName = "Users")public class User {@NonNull@PrimaryKeyprivate String id;@ColumnInfo(name = "name")@SerializedName("name")@Exposeprivate String name;@ColumnInfo(name = "age")@SerializedName("age")@Exposeprivate String age;public User(String id,String name, String age) {   this.id = id;   this.name = name;   this.age = age;}public String getId() {   return id;}public void setId(String id) {   this.id = id;}public String getName() {    return name;}public void setName(String name) {   this.name = name;}public String getAge() {   return age;}public void setAge(String age) {   this.age = age;}}
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

您可以在插入新数据之前删除表以实现它使用下面的代码:


@Dao

public abstract UserDao {


 @Insert(onConflict = OnConflictStrategy.REPLACE)

 abstract void Insert(User... users);


 @Query("SELECT * FROM Users")

 abstract LiveData<List<User>> getRoomUsers();


 @Insert(onConflict = OnConflictStrategy.IGNORE)

 abstract void insert( List<Users> list);


 @Query("DELETE FROM Users")

 abstract void deleteAll();


 @Transaction

 void deleteAndInsert(List<Users> list){

   deleteAll();

   insert(list);

 }


}

现在您可以使用userDb.deleteAndInsert(list)方法 after List<User> list = response.body(); 与服务器同步数据。


查看完整回答
反对 回复 2023-04-26
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信