├── .gitignore
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── goyourfly
│ │ └── multiselectadapter
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── goyourfly
│ │ │ └── multiselectadapter
│ │ │ ├── DemoAdapter.kt
│ │ │ ├── DemoSectionAdapter.kt
│ │ │ ├── MainActivity.kt
│ │ │ ├── MoreActivity.kt
│ │ │ ├── RecyclerActivity.kt
│ │ │ └── more
│ │ │ ├── Demo1Activity.kt
│ │ │ ├── Demo2Activity.kt
│ │ │ ├── Demo3Activity.kt
│ │ │ ├── Demo4Activity.kt
│ │ │ ├── Demo5Activity.kt
│ │ │ ├── Demo6Activity.java
│ │ │ └── Demo7Activity.kt
│ └── res
│ │ ├── drawable
│ │ └── ic_star_border_black_24dp.xml
│ │ ├── layout
│ │ ├── activity_base_recycler_adapter_helper.xml
│ │ ├── activity_main.xml
│ │ ├── activity_more.xml
│ │ ├── activity_recycler.xml
│ │ ├── custom_control.xml
│ │ ├── item_email.xml
│ │ └── item_section.xml
│ │ ├── menu
│ │ ├── menu_main.xml
│ │ └── menu_select.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── goyourfly
│ └── multiselectadapter
│ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── library
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── goyourfly
│ │ └── multiple
│ │ └── adapter
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── goyourfly
│ │ │ └── multiple
│ │ │ └── adapter
│ │ │ ├── MultipleAdapter.kt
│ │ │ ├── MultipleSelect.kt
│ │ │ ├── SelectState.kt
│ │ │ ├── SimpleStateChangeListener.kt
│ │ │ ├── StateChangeListener.kt
│ │ │ ├── ViewState.kt
│ │ │ ├── menu
│ │ │ ├── CustomMenuBar.kt
│ │ │ ├── MenuBar.kt
│ │ │ ├── MenuController.kt
│ │ │ ├── SimpleDeleteMenuBar.kt
│ │ │ ├── SimpleDeleteSelectAllMenuBar.kt
│ │ │ ├── SimpleDoneAndDeleteMenuBar.kt
│ │ │ └── SimpleDoneMenuBar.kt
│ │ │ └── viewholder
│ │ │ ├── AnimationInterface.kt
│ │ │ ├── BaseViewHolder.kt
│ │ │ ├── DecorateFactory.kt
│ │ │ ├── EventObserverView.kt
│ │ │ ├── color
│ │ │ ├── ColorFactory.kt
│ │ │ └── ColorViewHolder.kt
│ │ │ ├── drawable
│ │ │ ├── DrawableFactory.kt
│ │ │ └── DrawableViewHolder.kt
│ │ │ └── view
│ │ │ ├── CheckBoxFactory.kt
│ │ │ ├── CustomViewFactory.kt
│ │ │ ├── CustomViewHolder.kt
│ │ │ └── RadioBtnFactory.kt
│ └── res
│ │ ├── drawable
│ │ ├── ic_arrow_back_black_24dp.xml
│ │ ├── ic_check_box_black_24dp.xml
│ │ ├── ic_check_box_outline_blank_black_24dp.xml
│ │ ├── ic_delete_black_24dp.xml
│ │ ├── ic_done_black_24dp.xml
│ │ ├── ic_radio_button_checked_black_24dp.xml
│ │ ├── ic_radio_button_unchecked_black_24dp.xml
│ │ └── ic_select_all_black_24dp.xml
│ │ ├── menu
│ │ ├── menu_multiple_select_delete.xml
│ │ ├── menu_multiple_select_done.xml
│ │ ├── menu_multiple_select_done_delete.xml
│ │ └── menu_multiple_select_done_delete_all.xml
│ │ └── values
│ │ ├── colors.xml
│ │ ├── ids.xml
│ │ └── strings.xml
│ └── test
│ └── java
│ └── com
│ └── goyourfly
│ └── multiple
│ └── adapter
│ └── ExampleUnitTest.java
├── screenshot
├── Demo0.png
├── Demo1.png
├── Demo2.png
├── Demo3.png
├── Demo4.png
├── Demo5.png
├── Demo6.png
├── MenuBar.png
├── MultiSelectAdapter.png
├── NormalItemView.png
├── SelectItemView.png
└── Sequence.png
├── settings.gradle
└── 一行实现RecyclerView的多选模式.md
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | /.idea/
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MultiSelectAdapter
2 |
3 | MultiSelectAdapter是一个为RecyclerView设计的Adapter,它可以在不修改你原有Adapter的前提下让你的RecycleView支持多选和批量操作
4 |
5 | ## Demo
6 |
7 |
8 |
9 |
10 | |
11 | |
12 | |
13 | |
14 |
15 |
16 | |
17 | |
18 | |
19 | |
20 |
21 |
22 | ## Compile
23 | [](https://jitpack.io/#goyourfly/MultiSelectAdapter)
24 |
25 | Step 1. Add it in your root build.gradle at the end of repositories:
26 |
27 | ````
28 | allprojects {
29 | repositories {
30 | ...
31 | maven { url 'https://jitpack.io' }
32 | }
33 | }
34 | ````
35 |
36 | Step 2. Add the dependency
37 |
38 | ````
39 | dependencies {
40 | compile 'com.github.goyourfly:MultiSelectAdapter:lastVersion'
41 | }
42 | ````
43 |
44 |
45 | ## Usage
46 |
47 | ````java
48 | MultipleAdapter adapter = MultipleSelect
49 | .with(Activity)
50 | .adapter(YourAdapter)
51 | .ignoreViewType(ItemViewType)
52 | .linkList(YourAdapter.list)
53 | .stateChangeListener(StateChangeListener)
54 | .decorateFactory(? extends DecorateFactory)
55 | .customMenu(? extends MenuBar)
56 | .build();
57 | ````
58 |
59 | | 方法名 | 形参 | 是否必须 | 说明 |
60 | |:-----|:-----|:-----|:-----|
61 | | with | Activity | 是 | 显示RecycleView的Activity |
62 | | adapter | RecyclerView.Adapter | 是 | 你的Adapter |
63 | | ignoreViewType | Integer[] | 否 | 需要忽略的Item类型,比如Section,Header,Footer等 |
64 | | linkList | List