質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1199閲覧

Android StudioでRealmを使用したデータの更新結果が取得できない。

Android-student

総合スコア5

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/06/14 15:55

編集2021/06/20 13:27

前提・実現したいこと

Android StudioでRealmを使用しています。
データの読み込みを行い、該当データを更新後
更新後のデータを読み込みテキストボックスに表示したいです。

発生している問題・エラーメッセージ

特定のデータを読み込んだ後に値を更新し、再度読み込みを行い、テキストボックスへ表示しても
更新前の値が表示される。

該当のソースコード

・MainActivity.javaより一部抜粋。 テキストボックスNoに"HAKASE"を出力したいが"NATTO"が出力される。
Realm realm = Realm.getDefaultInstance();

realm.beginTransaction(); SampleModel model = realm.createObject(SampleModel.class); model.setName("GODIVA"); model.setAge(21); SampleModel model2 = realm.createObject(SampleModel.class); model2.setName("IEKEI"); model2.setAge(21); SampleModel model3 = realm.createObject(SampleModel.class); model3.setName("NATTO"); model3.setAge(64); realm.commitTransaction(); RealmQuery<SampleModel> query = realm.where(SampleModel.class); query.equalTo("age",64); RealmResults<SampleModel> result = query.findAll(); realm.beginTransaction(); result.get(0).setName("HAKASE"); realm.commitTransaction(); query.equalTo("age",64); result = query.findAll(); for (int i=0;i<result.size();i++){ No.setText(result.get(i).getName()); //System.out.println(result.get(i).getName()); //System.out.println(result.get(i).getAge()); }

・SampleModel.javaのソースコードです。
package com.example.dbrealmj;
import io.realm.RealmObject;

public class SampleModel extends RealmObject {
private String name;
private int age;

public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; }

}

試したこと

"HAKASE"の設定後、名称を変え
RealmQuery<SampleModel> query2 = realm.where(SampleModel.class);
query2.equalTo("age",64);
RealmResults<SampleModel> result2 = query.findAll();

for (int i=0;i<result2.size();i++){ No.setText(result2.get(i).getName());

としてみたが結果は同じだった。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

for (int i=0;i<result.size();i++){
No.setText(result.get(i).getName());
//System.out.println(result.get(i).getName());
//System.out.println(result.get(i).getAge());
}

の部分をfor文を使わず
No.setText(result.get(0).getName());
に変更したら解決しました。

複数件の更新のやり方とそもそもの記述が古いかどうかは今後確認していきます。

投稿2021/06/29 19:41

Android-student

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問