我遵循了一个不太好的教程,这就是我所做的:
public class realmHelper {
Realm realm;
RealmResults<fav_places> fav_places;
boolean saved;
public realmHelper(Realm realm)
{
this.realm = realm;
}
public boolean save(final fav_places favs) {
if (favs == null) {
saved = false;
} else {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
try {
fav_places fav = realm.copyToRealm(favs);
saved =true;
}
catch (RealmException e){
e.printStackTrace();
saved=false;
}
}
});
}
return saved;
}
public List<com.nuku.mc.populate_recyclerview.fav_places> retreiveFrom() {
fav_places = realm.where(fav_places.class).findAll();
return null;
}
public ArrayList<fav_places> justRefresh() {
ArrayList<fav_places> latest = new ArrayList<>();
for (fav_places f : fav_places) {
latest.add(f);
}
return latest;
}
}
这是我的POJO:
public class fav_places extends RealmObject {
@PrimaryKey
int fav_id;
public String place_name;
public String image;
public String place_category;
public String description;
public fav_places(){
}
public fav_places(String name, String image) {
this.place_name = name;
this.image = image;
}
public String getPlace_name() {
return place_name;
}
public void setPlace_name(String name) {
this.place_name = name;
}
public void setPlace_image(String image){
this.image = image;
}
public String getPlace_image() {
return image;
}
}
这是交易代码:
case R.id.target: {
Bucket.setImageResource(R.drawable.ic_target_icon_clicked);
int position = getAdapterPosition();
places p = places_list.get(position);
String name = p.getPlace_name();
String image = p.getPlace_image();
fav_places f = new fav_places(name,image);
RealmConfiguration config = new RealmConfiguration.Builder(context).build();
realm = Realm.getInstance(config);
realmHelper helper = new realmHelper(realm);
helper.save(f);
}
break;
甚至没有设置ID(认为是自动增量) 这是我得到的
FATAL EXCEPTION: main
io.realm.exceptions.RealmPrimaryKeyConstraintException: Value already exists: 0
at io.realm.internal.Table.throwDuplicatePrimaryKeyException(Table.java:721)
at io.realm.internal.Table.addEmptyRowWithPrimaryKey(Table.java:473)
at io.realm.Realm.createObject(Realm.java:708)
at io.realm.fav_placesRealmProxy.copy(fav_placesRealmProxy.java:397)
at io.realm.fav_placesRealmProxy.copyOrUpdate(fav_placesRealmProxy.java:387)
at io.realm.DefaultRealmModuleMediator.copyOrUpdate(DefaultRealmModuleMediator.java:99)
at io.realm.Realm.copyOrUpdate(Realm.java:1272)
at io.realm.Realm.copyToRealm(Realm.java:727)
at com.nuku.mc.populate_recyclerview.realmHelper$1.execute(realmHelper.java:36)
at io.realm.Realm.executeTransaction(Realm.java:1065)
at com.nuku.mc.populate_recyclerview.realmHelper.save(realmHelper.java:31)
at com.nuku.mc.populate_recyclerview.placesAdapter$ViewHolder.onClick(placesAdapter.java:159)
at android.view.View.performClick(View.java:4212)
at android.view.View$PerformClick.run(View.java:17476)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5371)
=&GT;另一个问题我如何为此设置主键?我应该做静态计数++吗?