有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我想在每次从recyclerview中单击一个项目时将对象添加到领域数据库

我遵循了一个教程,但效果不好,以下是我所做的:

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 安卓.view.View.performClick(View.java:4212)
                                                       at 安卓.view.View$PerformClick.run(View.java:17476)
                                                       at 安卓.os.Handler.handleCallback(Handler.java:800)
                                                       at 安卓.os.Handler.dispatchMessage(Handler.java:100)
                                                       at 安卓.os.Looper.loop(Looper.java:194)
                                                       at 安卓.app.ActivityThread.main(ActivityThread.java:5371)

=>;另一个问题是,我如何设置主键?我应该做静态计数++


共 (0) 个答案