2017-04-02 5 views
0

RealmRecyclerViewAdapterでUIリストを管理しています。私はすぐに表示されるコレクションに "保留中の"アイテムを追加したいと同時に、新しいアイテムをサーバーにポストする。故障の場合は、ディスプレイから取り外します。チャット機能に似ています。私はチャットを送信したときにそのチャットを表示し、何らかの理由で投稿が失敗した場合、そのチャットを削除してユーザに警告することができます。RealmRecyclerViewAdapterを使用してRealmResultsに保留中のアイテムを追加します。

問題は、通常のRecyclerViewアダプタでは、IDのないコレクションの最後にアイテムを1つ追加し、必要に応じて削除することができます。しかし、RealmRecyclerViewAdapterは管理対象のRealmResultsを使用するため、IDなしで新しい項目を追加することはできません。

RealmRecyclerViewAdapterで説明している状況を処理する方法を提案する人はいますか?

答えて

1

データモデルがどのように見えるかわからない。具体的なアドバイスをするのは難しいですが、あなたの持っているIDのように聞こえるので、次のようにしてください:

1)IDをオフラインで生成する必要があります。そのための標準的な解決策はGUIDです:https://en.wikipedia.org/wiki/Universally_unique_identifier 2)あなたのモデルクラスに "syncedWithServer"などのブール値を設定してください。次に、まだ同期されていないすべてのアイテムを「保留中」としてレンダリングできます。

public class ChatEntry extends RealmObject { 
    @PrimaryKey 
    private String id = UUID.randomUUID().toString(); 
    private String entry; 
    private boolean syncedWithServer; 
} 
+0

申し訳ありません申し訳ありませんが、「IDなしで新しいアイテムを追加できません」と言いました。技術的には投稿する前にIDを追加することができますが、1)にする必要があります。クライアントが生成したIDで新しいチャットメッセージを作成する2)。レルムにコピーする3)。サーバーに投稿する4)。成功すると、最初のローカル領域オブジェクトを削除する5)。サーバーが生成したIDで新しいオブジェクトを領域にコピーします。私はこれがうまくいくだろうと思っていますが、RealmRecyclerViewAdapterに余分なリスト項目を表示するだけの簡単なことがあります。 – jwBurnside

関連する問題