2015-11-18 2 views
3

Попытка реализовать быструю фильтрацию ListView в ответном нативном. В настоящее время я фильтрую DataSource для достижения этого. Он работает, но вызывает большие проблемы с производительностью. Проблема заключается в следующем:Фильтрация ListView с большим количеством строк

  1. Существует ListView со 100 элементами в нем. Все они оказываются
  2. фильтр применяется, который сжимает его, скажем, 2 ст
  3. Когда фильтр очищается и DataSource возвращается к исходному 100 пунктов ListView повторно отображает 98 элементов, вызывающих проблемы большой производительности (Показана производительность ListView при массовом рендеринге новых рядов here)

Я что-то не хватает здесь?

EDIT: добавлен rnplay образец приложение, чтобы продемонстрировать подход я в настоящее время с помощью https://rnplay.org/apps/szko6Q

+0

Вопросы без образца кода получает меньше внимания, пожалуйста разместим ваш пример кода & задайте вопрос, связанный с предоставленным кодом. – ahmad

+0

может вычислить, что подходит на экране и отображать только те элементы, обнаруживать прокрутку и отображать оставшиеся предметы по мере прокрутки пользователя. (вы также можете удалить те, которые прокручиваются с экрана, есть экспериментальная поддержка для этого, называемая removeClippedSubviews) –

ответ

1

Оказывая пользователя эти ниже указанные свойства

<ListView 
    removeClippedSubviews={true} 
    renderRow={this.renderRow} 
    dataSource={this.getDataSource()} 
    renderScrollComponent={(props) =><React.RecyclerViewBackedScrollView {...props}/>} 
    style={{overflow:'hidden'}} 
    renderSectionHeader={this.renderSectionHeader}/> 
Смежные вопросы