【问题标题】:Adding items to Realm database changes some variables向 Realm 数据库添加项目会更改一些变量
【发布时间】:2025-12-21 21:35:11
【问题描述】:

这是我的代码:

for (SearchData searchData1 : searchDataTemp){
                            Log.i("", "test is favourite searchdata:" + searchData1.getIs_favorite() + "..name: " + searchData1.getTitle());
                        }
 Realm realm = Realm.getInstance(getActivity());
                            realm.beginTransaction();
                            List<SearchData> managedSeachData = realm.copyToRealmOrUpdate(searchDataTemp);
                            realm.commitTransaction();
for (SearchData searchData1 : managedSeachData) {
                                Log.i("", "test is favourite searchdata:" + searchData1.getIs_favorite() + "..name: " + searchData1.getTitle());
                                user.getRecents().add(searchData1);
                            }

这是我在日志中得到的正常列表:

test is favourite searchdata:true..name: Vondelpark

这是我在日志中获得的托管 Realmlist:

test is favourite searchdata:false..name: Vondelpark

任何想法如何解决这个问题?

PS:这是我的 SearchData 模型:

public class SearchData extends RealmObject{
@PrimaryKey
private String id;
private String title;
private String subtitle;
private String reference;
private String place_id;
private boolean is_favorite;
private int timestamp;
private String last_travel_mode;
private Geometry geometry;
private double distance;
private boolean close;
private int visited_count;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getSubtitle() {
    return subtitle;
}

public void setSubtitle(String subtitle) {
    this.subtitle = subtitle;
}

public String getReference() {
    return reference;
}

public void setReference(String reference) {
    this.reference = reference;
}

public String getPlace_id() {
    return place_id;
}

public void setPlace_id(String place_id) {
    this.place_id = place_id;
}

public boolean getIs_favorite() {
    return is_favorite;
}

public void setIs_favorite(boolean is_favorite) {
    this.is_favorite = is_favorite;
}

public int getTimestamp() {
    return timestamp;
}

public void setTimestamp(int timestamp) {
    this.timestamp = timestamp;
}

public String getLast_travel_mode() {
    return last_travel_mode;
}

public void setLast_travel_mode(String last_travel_mode) {
    this.last_travel_mode = last_travel_mode;
}

public Geometry getGeometry() {
    return geometry;
}

public void setGeometry(Geometry geometry) {
    this.geometry = geometry;
}

public double getDistance() {
    return distance;
}

public void setDistance(double distance) {
    this.distance = distance;
}

public boolean isClose() {
    return close;
}

public void setClose(boolean close) {
    this.close = close;
}

public boolean is_favorite() {
    return is_favorite;
}

public int getVisited_count() {
    return visited_count;
}

public void setVisited_count(int visited_count) {
    this.visited_count = visited_count;
}

public SearchData() {
}

public SearchData(String id, String title, String subtitle, String reference, String place_id, boolean is_favorite, int timestamp, String last_travel_mode , int visited_count){
    this.id = id;
    this.title = title;
    this.subtitle = subtitle;
    this.reference = reference;
    this.place_id = place_id;
    this.is_favorite = is_favorite;
    this.timestamp = timestamp;
    this.last_travel_mode = last_travel_mode;
    this.visited_count = visited_count;
}

public SearchData(String id, String title, String subtitle, String reference, String place_id, boolean is_favorite, int timestamp, String last_travel_mode, Geometry geometry , int visited_count){
    this.id = id;
    this.title = title;
    this.subtitle = subtitle;
    this.reference = reference;
    this.place_id = place_id;
    this.is_favorite = is_favorite;
    this.timestamp = timestamp;
    this.last_travel_mode = last_travel_mode;
    this.geometry = geometry;
    this.visited_count = visited_count;
}

}

【问题讨论】:

  • 可以加SearchData代码吗?
  • @Android777 添加了我的 SearchData 模型
  • 作为旁注,我想知道为什么这个模型可以工作,因为Geometry 绝对不是 Realm 支持的类型,如果你不 @Ignore 这个,它通常会在构建时抛出错误字段。
  • 哦,除非它也是一个 RealmObject
  • Geometry 是我创建的另一个 Model 类,它扩展了 RealmObject。模型中的所有内容都扩展了 RealmObject,或者是一个原语。直到几个小时前,这段代码才能完美运行。我的代码库中没有任何更改。更重要的是,如果我尝试使用旧的已经制作的 apk,它可以工作,如果我执行 git reset,并尝试与旧 apk 相同的代码,它就不起作用。

标签: android database list realm realm-list


【解决方案1】:

SearchData 类同时具有 getIs_favorite()is_favorite()

在这种情况下,Realm 注释处理器仅覆盖 is_favorite()。 这就是为什么getIs_favorite() 总是返回false

【讨论】: