猿问

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

我正在从服务器获取数据并保存在房间数据库中,然后从房间中将其显示在回收站视图中。数据完美地保存在房间数据库中并显示在回收站视图中。


问题:当我从服务器数据库中删除一些数据时,之前保存的旧副本仍然存在于房间中。


我想要什么:我不想在回收者视图中显示从服务器删除的数据。那么如何根据服务器响应更新房间数据库。


这是我到目前为止所做的:


UserDao.java


@Dao

public 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

@PrimaryKey

private String id;


@ColumnInfo(name = "name")

@SerializedName("name")

@Expose

private String name;


@ColumnInfo(name = "age")

@SerializedName("age")

@Expose

private 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;

}

}


哔哔one
浏览 119回答 1
1回答

holdtom

您可以在插入新数据之前删除表以实现它使用下面的代码:@Daopublic abstract UserDao {&nbsp;@Insert(onConflict = OnConflictStrategy.REPLACE)&nbsp;abstract void Insert(User... users);&nbsp;@Query("SELECT * FROM Users")&nbsp;abstract LiveData<List<User>> getRoomUsers();&nbsp;@Insert(onConflict = OnConflictStrategy.IGNORE)&nbsp;abstract void insert( List<Users> list);&nbsp;@Query("DELETE FROM Users")&nbsp;abstract void deleteAll();&nbsp;@Transaction&nbsp;void deleteAndInsert(List<Users> list){&nbsp; &nbsp;deleteAll();&nbsp; &nbsp;insert(list);&nbsp;}}现在您可以使用userDb.deleteAndInsert(list)方法 after List<User> list = response.body(); 与服务器同步数据。
随时随地看视频慕课网APP

相关分类

Java
我要回答