我正在从服务器获取数据并保存在房间数据库中,然后从房间中将其显示在回收站视图中。数据完美地保存在房间数据库中并显示在回收站视图中。问题:当我从服务器数据库中删除一些数据时,之前保存的旧副本仍然存在于房间中。我想要什么:我不想在回收者视图中显示从服务器删除的数据。那么如何根据服务器响应更新房间数据库。这是我到目前为止所做的: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(); 与服务器同步数据。
添加回答
举报
0/150
提交
取消