1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhaoyanjun-RecyclerView

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 21:37 433956b

RecyclerView

RecyclerView больше не отвечает за отображение, его использование более развязано по сравнению с ListView. В отличие от ListView, RecyclerView больше не отвечает за такие функции отображения элементов, как их расстановка и т. д. Google разделил всю работу, связанную с макетом, отрисовкой и другими аспектами на различные классы. Поэтому разработчики могут настраивать различные функции в соответствии со своими потребностями.

Это типичное использование RecycleView:

Класс Описание
RecyclerView.Adapter Управляет набором данных и создаёт представление для каждого элемента
RecyclerView.ViewHolder Хранит представление элемента
RecyclerView.LayoutManager Отвечает за раскладку элементов
RecyclerView.ItemDecoration Добавляет дочерние представления к каждому элементу, используется для рисования разделителей в демо
RecyclerView.ItemAnimator Отвечает за анимационные эффекты при добавлении и удалении данных

Проект

LayoutManagerRecyclerView

  • Линейный макет RecyclerView

recyclerView.setLayoutManager(new LinearLayoutManager(this));

  • Сетка RecyclerView

recyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 3));

  • Ступенчатый поток RecyclerView

recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));

  • Добавление данных в RecyclerView

myAdapter.notifyItemInserted(size);

  • Удаление данных из RecyclerView

myAdapter.notifyItemRemoved(0);

  • Обновление данных в RecyclerView

myAdapter.notifyDataSetChanged();

Методы обновления данных:

 /**
     * Добавление данных
     * @param content
     * @param position
     */
    public void addItem(String content, int position) {
        list.add(position, content);
        notifyItemInserted(position);
    }

    /**
     * Увеличение данных
     * @param content
     */
    public void addItem( String content ){
        if ( list == null ) {
            list = new ArrayList<>() ;
        }
        list.add( list.size() , content );
        notifyItemInserted( list.size() );
    }

    /**
     * Удаление данных
     * @param model
     */
    public void removeItem(String model) {
        int position = list.indexOf(model);
        list.remove(position);
        notifyItemRemoved(position);//Attention!
    }

    /**
     * Удаление данных
     * @param position
     */
    public void removeItem( int position ){
        list.remove( position ) ;
        notifyItemRemoved( position );
    }

ItemDecorationRecyclerView

  • ItemDecorator RecyclerView

Эффект изображения:

Часто используемые методы ItemDecoration:

SectionRecyclerView

  • Функция тегов

PinnedSectionRecyclerView

  • Липкие теги

AnimatorRecyclerview item Анимационные эффекты

  • Стандартная анимация
  //Установка стандартной анимации
  recyclerView.setItemAnimator( new DefaultItemAnimator()) ;
  • Третья библиотека анимации

https://github.com/gabrielemariotti/RecyclerViewItemAnimators

  //Анимация входа снизу экрана
  recyclerView.setItemAnimator( new SlideInOutBottomItemAnimator( recyclerView ));

  //Анимация входа слева экрана
  recyclerView.setItemAnimator( new SlideInOutLeftItemAnimator( recyclerView ));

  //Анимация входа справа экрана
  recyclerView.setItemAnimator( new SlideInOutRightItemAnimator( recyclerView ));

  //Анимация входа сверху экрана
  recyclerView.setItemAnimator( new SlideInOutTopItemAnimator( recyclerView ));

  //Масштабирование при входе (Примечание: есть ошибка при тестировании)
  recyclerView.setItemAnimator( new ScaleInOutItemAnimator( recyclerView )) ;

  //Одновременное масштабирование и вход справа (Примечание: есть ошибка при тестировании)
  recyclerView.setItemAnimator( new SlideScaleInOutRightItemAnimator( recyclerView ));
  
  • Другие библиотеки анимации

https://github.com/wasabeef/recyclerview-animators

MultiRecyclerView

  • Сложная раскладка RecyclerView

Эффект изображения:

MultiRecyclerView2

Этот проект представляет собой сложную систему распределения макетов MultiType.

MultiType — это промежуточная система распределения для многотипных списков, которая помогает быстро и легко разрабатывать сложные страницы списков. Она изначально была разработана для страниц чата, где сообщения имеют множество различных типов и часто добавляются новые. MultiType может легко справляться с этим, обеспечивая модульность кода и возможность расширения новых типов в список. Он имеет встроенную систему повторного использования пула типов-представлений, поддерживает RecyclerView и прост в использовании.

GitHub:

https://github.com/drakeet/MultiType

https://github.com/drakeet/MultiTypeTemplates

Связанные блоги:

Android 复杂的多类型列表视图新写法:MultiType

Android 复杂的列表试图新写法 MultiType

Android 复杂的列表视图新写法: MultiType 详解篇

Ссылки на проекты Android:

compile 'me.drakeet.multitype:multitype:2.2.2'

Эффект изображения:

RefreshRecyclerView

Этот проект реализует функцию обновления списка при прокрутке вниз.

Справочные материалы

  • 明日之星-RecyclerView РекyclerView: подробное описание использования (часть 2) — сложные макеты.

Android: попытка нового подхода к написанию сложных списков MultiType.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zhaoyanjun-RecyclerView.git
git@api.gitlife.ru:oschina-mirror/zhaoyanjun-RecyclerView.git
oschina-mirror
zhaoyanjun-RecyclerView
zhaoyanjun-RecyclerView
master