Я хочу добавлять объект в базу данных области каждый раз, когда щелкают элемент в окне повторного использования.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Я хочу добавлять объект в базу данных области каждый раз, когда щелкают элемент в окне повторного использования.

Сообщение Anonymous »

Я следовал руководству, оно не работает.
Вот что я сделал:

Код: Выделить всё

public class realmHelper {
Realm realm;
RealmResults 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 retreiveFrom() {
fav_places = realm.where(fav_places.class).findAll();
return null;
}

public ArrayList justRefresh() {
ArrayList  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;
Я даже не устанавливаю идентификатор (думал, что это автоматическое приращение).
Вот что я получаю

Код: Выделить всё

 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)
Еще один вопрос, как мне установить для этого первичный ключ. Должен ли я использовать статический счетчик++?

Подробнее здесь: https://stackoverflow.com/questions/386 ... e-recycler
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»