私は考えることができる2つのアプローチがあります。最初は、提案したように、選択した要素をチェックすることです。これは私の答えto this SO postに似ています。リスナー自体は高価ではなく、リスナーで軽量チェックを行っている限り、パフォーマンスにはほとんど影響しません。このアプローチの落とし穴は、タッチスクリーンデバイス(リーンバック実行中)の場合、スクロールだけではアイテムの選択が実行されないため、スクロール位置を選択できないことです。
オプション1:
final int FETCH_NEXT_THRESHOLD = 5; // or NUM_COLUMNS * 2 if it's a grid
final ListRow listRow = (ListRow) row;
final ArrayObjectAdapter currentRowAdapter = listRow.getAdapter();
int selectedIndex = currentRowAdapter.indexOf(item);
if (selectedIndex != -1 && (currentRowAdapter.size() - index < FETCH_NEXT_THRESHOLD) {
// One of the last FETCH_NEXT_THRESHOLD items was selected.
// Trigger next page fetch now.
}
オプション2:
他のアプローチは、VerticalGridView
がRecyclerView
によって支えられているという事実に依存しています。 this classのようなものを使用できます。これは、子要素の数と現在表示されている要素の数をチェックします。これは頻繁にヒットするため、パフォーマンスにさらに大きな影響を与えます(ただし、それでもなおマイナーな影響はあります)。これを達成するには、VerticalGridFragment
のVerticalGridView
にScrollListener
を追加します。これは、おそらくPresenter
レベルで行う必要があります。
結論:実装が簡単であり、ほとんどのユースケースに対応しますので、私はオプション1をお勧めし
。しかし、リーンバックを実行するタッチスクリーンデバイスについて心配している場合は、オプション2と同様の方法を試してみてください。
おかげさまで、両方のオプションを読んだ後、私はオプション1にも取り組んでいます。 – Vpd