@AOJ 「…」メニューの「選択してコピー」かな?
Firefoxアドオンの Twitter原寸びゅー、 2023/8 に公開停止してたのね https://memo.furyutei.com/entry/20230831/1693485250
Xのドメインがx.comにリダイレクトされるようになって使えなくなった
…という理解を得たので、RoomのDaoでFlowを返してDB更新検知の度に全読み込みしてしまう状況に妥協する。この要件だと回避が困難だわ
たとえば「上端プル更新可能だけど、要素をname別にカウントしてそれぞれ上から3件目だけ表示を変更する。さらに外部要因で要素のnameはリアルタイムに変化する。」
とかはDB更新検知から表示までの間のどこかで全データをスキャンするのが最も自然だろう。
RoomのDB更新検知はテーブル単位で何か変更があったことしか分からない。
RecyclerViewの差分更新に使われるDiffUtilは古いデータと新しいデータ全体にアクセスできることを前提にしている。
なのでDiffUtilをそのまま使うと変更の度に表示データ全てのDB読み出しと(変換の)負荷がかかる。
そこでJetPack Paging3はPagingDataAdapterとAsyncPagingDataDifferを使い、必要になるまでデータ全体にアクセスしない
…という構造になっている。別に悪くはないが、
かわりに「Adapterにデータをセットする前にデータ全体を調べて加工したい」とかは面倒になる。
pagingData.insertSeparators で何か追加したり、 pagingData.map でUI側が識別できるデータに変換する。
PagingSource をカスタムしてDBから読んだページに何か追加する。
など対応方法はあるが、限界がある。