【发布时间】:2018-07-03 08:53:16
【问题描述】:
当我从领域数据库中过滤项目列表时,我遇到了列表更新问题。
我真正想做的是在表中添加一些用户记录,当用户单击过滤器按钮时,我查询领域数据库以过滤结果。我能够将结果打印在日志中,但不会反映在列表中,因为由于数据库没有更改,因此未调用更改侦听器。谁能指导如何在列表中反映通过查询获得的结果?
模型类如下图。
public class UserModel extends RealmObject {
@PrimaryKey
private int id;
@Required
private String firstName;
@Required
private String lastName;
private UserAddressModel userAddress;
private int age;
public UserAddressModel getUserAddress() {
return userAddress;
}
public void setUserAddress(UserAddressModel userAddress) {
this.userAddress = userAddress;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
在数据库中添加记录的查询如下。
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(@NonNull Realm realm) {
int nextID;
if (mUserModel == null) {
// increment index
Number num = realm.where(UserModel.class).max("id");
if (num == null) {
nextID = 1;
} else {
nextID = num.intValue() + 1;
}
} else {
nextID = mUserModel.getId();
}
UserModel obj = new UserModel();
obj.setId(nextID);
obj.setFirstName(etFirstName.getText().toString().trim());
obj.setLastName(etLastName.getText().toString().trim());
obj.setAge(Integer.parseInt(etAge.getText().toString().trim()));
UserAddressModel userAddressModel = new UserAddressModel();
userAddressModel.setAddress(etAddress.getText().toString().trim());
userAddressModel.setId(nextID);
obj.setUserAddress(userAddressModel);
realm.copyToRealmOrUpdate(obj);
realm.beginTransaction();
realm.addChangeListener(mOnDataChangeListener);
}
});
过滤记录的查询如下。
RealmResults<UserModel> realmList = realm.where(UserModel.class).greaterThanOrEqualTo("age", 20).findAll();
上面的查询给出了我在日志中打印的结果。但不要更新列表。
我也尝试将调用监听器添加到上述查询中,并将数据集更改通知到列表中,但没有帮助。
任何帮助将不胜感激。 TIA。
【问题讨论】:
-
发布一些代码 sn-p 以便其他人可以帮助您。你知道你的问题,但我们不知道。
标签: android android-studio-3.0 realm-mobile-platform realm-list