🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Realm

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

372閲覧

Realm DBの特定カラムの状態が変わった際に、RealmBaseAdapterのフィルタ表示に該当しなくなったデータが削除されない

snaoto

総合スコア9

Realm

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2023/10/26 08:10

編集2023/10/26 09:55

実現したいこと

  • Realm DBの特定カラムの状態が変わった際に、RealmBaseAdapterのフィルタ表示を更新したい

前提

業務でjava + kotlinを使用し、あるAndroidアプリを開発しております。
ある機能のリスト表示について解決できない箇所があり、質問させていただきました。
概要については以下となります。

  • Realm DBにて、ある設定を保存している
  • ステータスカラムを持ち、クラウドとの同期状態などを管理している(以下イメージ)
UUID作成ユーザー設定名設定詳細説明ステータス
UUID1田中飛べる同期済み
UUID2伊藤おりこう編集後、未同期
UUID3田中可愛いローカルで削除支持
  • 上記の内容をRealmBaseAdapterを使用し、ListView#setAdapterに使用して表示している。
  • 表示する際は、以下の条件でフィルタして表示している
    • 現在アプリにログインしているユーザーが作成した設定
    • 同期状態が「ローカルで削除済み」以外の設定を表示
  • 上記をとった例として、「田中」でログインしている場合は、上記のUUID1のみ表示したいです。

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

  • 上記DBの「ステータス」が「ローカルで削除支持」になった時にリスト表示から非表示にしたいが、表示されたままになってしまう。
  • 上記をとった例として、「田中」でログインしている状態で、UUID1の「ローカルで削除支持

」に更新した際に、フィルタが適用されずに、UIに表示され続けてしまう。

該当のソースコード

業務のコードのため、イメージとしての内容です。
該当画面に遷移時、以下の処理を行います。
基本的に、フィルタに関しては、以下以外に特段必要な処理な無い認識でいたのですが、認識違いがあればご指摘いただけると幸いです。

RealmBaseAdapterに渡すRealmResultの取得

java

1RealmResults<HogeHogeRealmObject> result = realm.where(HogeHogeRealmObject.class) 2 .equalTo("name", "田中") 3 .beginGroup() 4 .notEqualTo("status", 3) // 3 = 削除 5 .endGroup() 6 .findAll() 7 .sort("name", Sort.ASCENDING);

上記resultをRealmBaseAdapterを継承したadapterの初期化時に渡す

java

1 HogehogeAdapter(RealmResult<HogeHogeRealmObject> result) { 2 super(result) // RealmBaseAdapterに渡す 3 }

試したこと

  • 上記のフィルタ処理自体は、正しく除外されて返却されているため、ステータスの更新自体はは出来ている。
  • しかしUIには、常に全レコードが表示されてしまい、フィルタが適用されていない様な動作となっている。
  • レコードの追加、削除が行われるとUIは正しく更新されている。
  • 公式ガイドを確認して、同じ方法でフィルタ処理を実装

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

  • realm
  • android OS

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

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

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

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

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

jimbe

2023/10/26 16:31 編集

>補足情報(FW/ツールのバージョンなど) >realm >android OS これでは全く情報になっていません。時にはバージョンにより動作が違う等の場合もありますので、お調べください。 業務のコードそのままを出せないということでしたら、同様の状況を再現できるコードを新たに作成してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問