Пагинация в RecyclerListView висит в фокусе, пока в Android TV
Я использую RecyclerListView, чтобы показать многомерный список, когда пользователь нажимает кнопку возврата из полноэкранного воспроизведения.
<RecyclerListView
ref={ref}
style={Styles.ListContainer}
showsVerticalScrollIndicator={false}
dataProvider={dataProvider.cloneWithRows(currentData)}
layoutProvider={layoutProvider}
onLayout={() => { layoutLoaded.current = true }}
rowRenderer={TileRenderer}
onEndReachedThreshold={RowHeight}
onEndReached={() => {
if (layoutLoaded.current) {
console.log('getEpgNextPage')
getnextPage()
}
}}
initialRenderIndex={playingContentGroup.contentGroupIndex - 1}
renderAheadOffset={RowHeight * 4}
onVisibleIndicesChanged={onViewableRowsChanged}
renderFooter={TileFooter}
/>
TileRenderer отображает горизонтальный RecyclerListView для каждой строки. RowHeight - 70,5 dpi. Первая разбивка на страницы происходит, когда пользователь прокручивает вертикально до строки 2-3. Затем второй происходит в строке 10.
При разбиении на страницы полный список зависает на несколько секунд. Я использую GraphQL, поэтому он вызывает повторную визуализацию всего компонента RecyclerListView.
Есть ли способ исправить проблему зависания? Можно ли просто добавить новую страницу без повторного рендеринга всего списка при разбивке на страницы?
Я вижу, что rowRenderer вызывает от 0 до n строк каждый раз, когда происходит разбиение на страницы.
Когда пользователь прокручивает список, я вызываю метод ниже для поддержки прокрутки ленты (прокрутка в фиксированной позиции)
containerRef.scrollToIndex(index, true)
Иногда из-за этого прокрутка происходит два раза: один для нажатия кнопки пользователя и один для scrollToIndex. Есть ли другой способ сделать список для перехода к определенному индексу.