Добавить товары для адаптера в Xamarin.Android - PullRequest
0 голосов
/ 11 мая 2018

Я занимаюсь разработкой приложения на Xamarin.Android. Здесь я использую listview с baseadapter, чтобы добавить список контактов. Теперь мне нужно добавить элементы после прокрутки в конец списка из базы данных. Я имею в виду, что концепция похожа на «Load More Items». Сначала я добавляю элементы в адаптер, заново создавая его при прокрутке до конца списка. Но я узнал, что это не оптимальный путь из ссылки Загрузить еще элемент в ленивый адаптер и просмотр списка . Мой код, как показано ниже,

allContactsList -> получение элементов из базы данных

адаптер -> Мой пользовательский адаптер

if (allContactsList != null && allContactsList.Count() > 0)
                    {
                        if(adapter == null)
                            adapter = new AllContactsListAdapter(this, allContactsList);
                        else
                        {
                           //Stucks here. I can't append to adapter
                        }

                        adapter.NotifyDataSetChanged();
                        listView.Adapter = adapter;
                    }

Как добавить новые элементы в адаптер в Xamarin.Android?

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Listview устарел и больше не используется в профессиональных приложениях. Вместо этого используйте Recyclerview из библиотеки поддержки. Это более оптимально при загрузке предметов и имеет больше возможностей. Структура загрузки предметов практически одинакова. Если вы хотите добавить элементы в существующий список, просто добавьте их в свой список содержимого и после этого вызовите NotifyDataSetChanged();, как сказал @Joe Lv - MSFT.

0 голосов
/ 14 мая 2018

Мой рабочий код, как показано ниже.

List<MyClass> existingAllContactsList;
MyAdapter adapter;
ListView listView;

protected override void OnCreate(Bundle savedInstanceState)
{
...
...
BindData();
}

    void BindData()
    {

    var allContactList = list of items // from database

    if (allContactList != null && allContactList .Count() > 0)
                        {
                            if (adapter == null)
                            {
                                existingAllContactsList= allContactList;
                                adapter = new MyAdapter(this, existingAllContactsList);
                                listView.Adapter = adapter;
                            }
                            else
                            {
                                if (existingAllContactsList!= null && existingAllContactsList.Count() > 0)
                                    existingAllContactsList.AddRange(allContactList);
                                else
                                    existingAllContactsList= allContactList;
                            }

                            adapter.NotifyDataSetChanged();
                        }

}
0 голосов
/ 14 мая 2018

В вашем Adapter добавьте метод, подобный этому:

public void addItem(List<string> list)
{
    mList.AddRange(list);
    NotifyDataSetChanged();
}

Я предоставил демо на github .

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