Xamarin Forms: как обрабатывать большие данные в ListView? - PullRequest
0 голосов
/ 13 февраля 2020

Мне нужно показать очень большие данные в ListView. Должен ли я загрузить все данные один раз? Мой код ниже:

using System.Collections.ObjectModel;

namespace Brunie.Mobile.ViewModels {
    public class VmListCompany {
        public ObservableCollection<Company> AllCompanies {
            get;
        } = new ObservableCollection<Company>();
        public VmListCompany() {
            LoadAllCompanies();
        }
        private void LoadAllCompanies() {
            Company company = null;
            while(null != (company = GetNextCompany(company))) {
                AllCompanies.Add(company);
            }
        }
        private bool HasNextCompany(Company company) {
            bool hasNextCompany = false;
            ......
            return (hasNextCompany);
        }
        private Company GetNextCompany(Company company) {
            if(!HasNextCompany(company)) {
                return (null);
            }
            Company nextCompany = new Company();
            ......
            return (nextCompany);
        }
    }
    public class Company {
        public string Name {
            get;
            set;
        }
        public string Address {
            get;
            set;
        }
        public int NumberOfEmployees {
            get;
            set;
        }
    }
}

ListView в Xaml:

<ListView ItemsSource="{Binding AllCompanies}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="{Binding Name}" />
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

После вызова LoadAllCompanies количество AllCompanies равно 20562104. Таким образом, мое приложение очень медленно сейчас. Как справиться с этой ситуацией?

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Использовать разбиение на страницы на стороне API и загрузить данные в ListItemAppearing

0 голосов
/ 13 февраля 2020

Как сказал @Chetan, использование пагинации API - лучший подход. При этом, если по какой-то причине вы не можете изменить нумерацию страниц (скажем, сторонний API), вы все равно можете улучшить свою производительность, оптимизировав свою стратегию кэширования в виде списка, как показано в документах * 1003. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...