Linkage-RecyclerView — это вторичный список элементов управления, разработанный на основе архитектуры MVP (с использованием принципа инверсии зависимостей). Он был создан для проекта «RxJava Magicians» (https://github.com/KunMinX/RxJava2-Operators-Sample).
Сначала я искал подходящую библиотеку с открытым исходным кодом на GitHub, но не нашёл ничего подходящего. Поэтому я решил создать свою собственную библиотеку, которая будет легко настраиваться, иметь высокую степень развязки и может быть получена через удалённый репозиторий Maven.
Конфигурацию Linkage-RecyclerView очень просто настроить благодаря особенностям архитектуры MVP. Пользователю не нужно изучать внутреннюю логику, достаточно реализовать класс Config, чтобы настроить и расширить функциональность.
Кроме того, Linkage-RecyclerView требует всего одну строку кода для запуска без пользовательской конфигурации.
RxJava Magician | Eleme Linear | Eleme Grid |
---|---|---|
![]() |
![]() |
![]() |
Цель Linkage-RecyclerView состоит в том, чтобы одна строка кода могла подключить вторичный список.
Помимо исключения 99% ненужной сложной повторяющейся работы, вы также можете получить из этого проекта контент, включающий:
Если вы думаете о том, как выбрать подходящую архитектуру для вашего проекта, этот проект стоит рассмотреть!
implementation 'com.kunminx.linkage:linkage-recyclerview:2.7.0'
Примечание: эта библиотека размещена в Maven Central, пожалуйста, добавьте mavenCentral()
в корневой каталог build.gradle самостоятельно.
// DefaultGroupedItem.ItemInfo содержит три поля:
String title //(обязательно) заголовок вторичного варианта
String group //(обязательно) имя группы вторичного варианта, должно совпадать с заголовком соответствующего основного варианта
String content //(необязательно) содержание вторичного варианта
[
{
"header": "скидка",
"isHeader": true
},
{
"isHeader": false,
"info": {
"content": "вкусная еда, средство для набора веса, всегда в наличии",
"group": "скидка",
"title": "семейное ведро"
}
},
{
"header": "горячие продажи",
"isHeader": true
},
{
"isHeader": false,
"info": {
"content": "бестселлер, продано более 999 штук в месяц",
"group": "горячие продажи",
"title": "жареные куриные крылышки"
}
}
]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.kunminx.linkage.LinkageRecyclerView
android:id="@+id/linkage"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
linkage.init(items);
Советы:
В реальной разработке данные проекта или данные, связанные с этой библиотекой, могут отличаться по структуре. Обычно делается так: данные извлекаются и анализируются с сервера, а затем экземпляры объектов этой библиотеки добавляются в список. Это позволяет использовать данные списка в этой библиотеке. (См. CustomJsonSampleFragment для конкретного примера.)
Обратите внимание: если сервер напрямую использует объекты этой библиотеки для чтения и записи данных JSON, вам необходимо настроить правила ProGuard для этих объектов:
-keep class com.kunminx.linkage.bean.** {*;}
Дополнительные сведения о настройке см. в Wiki Analysis
Электронная почта: kunminx@gmail.com
Juejin: KunMinX на Juejin
Copyright 2018-present KunMinX
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )