私はRealmテーブルにリンクされたリストビューを作成しようとしています。そのため、アイテムがテーブルに追加されると、リストビューを更新する必要があります。問題は、項目が追加されたときにRealmChangeListenerが呼び出されないことです。RealmChangeListenerが呼び出されていない
Realm real = RealmController.getInstance(getContext()); // Singleton
RealmResults<Friend> friends = real.where(Friend.class).findAllAsync();
friends.addChangeListener(callback);
RealmChangeListener<RealmResults<Friend>> callback=new RealmChangeListener<RealmResults<Friend>>() {
@Override
public void onChange(RealmResults<Friend> element) {
// This is only called on async completed but not later
}
};
保存処理はretrotif応答で行われます。
new MyService(context).userService().getFriends().enqueue(new Callback<FriendResponse>() {
@Override
public void onResponse(Call<FriendResponse> call, Response<FriendResponse> response) {
Realm realm = RealmController.getInstance(context); // singleton
realm.beginTransaction();
realm.copyToRealmOrUpdate(response.body().friends);
realm.commitTransaction();
}
@Override
public void onFailure(Call<AllInfoResponse> call, Throwable t) {
}
});
あなたは何が起こっているか知っていますか?なにか提案を?
UIスレッドでレルムを閉じた場合、またはRealmResultsがGCされた場合は、changelistenerは呼び出されません。 –
私はcloseを呼ぶことはありません。実際、シングルトンはライブインスタンスを取得するのに役立ちます。だから私は友人がGC'edであることを納得させる、私はクラスの貢献としてそれを入れようとします –
@ChristianMelchior、私はRealmResultsを入れました友人;クラス属性としてそれは動作します!あなたが解決策としてそれを書いたら、私はそれを正しいものとしてマークします。 –