18

2.1.0-beta01現在、ページング アーキテクチャ ライブラリ (執筆時点のバージョン) をアプリに組み込むことを検討しています。1 つのコンポーネントは、ユーザーがそこから個々のアイテムを削除できるようにするリストです。このリストはネットワークのみであり、Room でローカルをキャッシュすることは意味がありません。

PagedList不変であり、変更をサポートしていません。私は、変更されて新しいリストとして返されたリストのコピーを持っていることを読んだことがあります。ドキュメントには同じことが記載されています:

ネットワーク API がリスト内の 1 つの項目の更新を通知するなど、より詳細な更新通知がある場合は、ネットワークからメモリにデータを読み込むことをお勧めします。次に、そのデータを、メモリ内スナップショットをラップする DataSource を介して PagedList に提示します。インメモリ コピーが変更されるたびに、以前の DataSource を無効にし、スナップショットの新しい状態をラップする新しいものを作成できます。

現在、単純なリストを表示するための基本的な推奨実装があります。私DataSourceはこのように見えます:

class MyDataSource<SomeItem> : PageKeyedDataSource<Int, SomeItem>() {

    override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, SomeItem>) {
        // Simple load from API and notification of `callback`.
    }

    override fun loadAfter(params: LoadParams<Int>, callback: LoadCallback<Int, SomeItem>) {
        // Simple load from API and notification of `callback`.
    }

    override fun loadBefore(params: LoadParams<Int>, callback: LoadCallback<Int, SomeItem>) {
        // Simple load from API and notification of `callback`.
    }
}

ドキュメントで参照されているメモリ内キャッシュの具体的な実装 (Room を使用せず、データセット全体を無効にしない) はどのようになりますか?

4

2 に答える 2