├── .gitignore ├── LICENSE.txt ├── README.md ├── build.gradle ├── config.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── image ├── 1.gif ├── 10.gif ├── 11.gif ├── 2.gif ├── 3.gif ├── 4.gif ├── 5.gif ├── 6.gif ├── 7.gif ├── 8.gif └── 9.gif ├── settings.gradle ├── support ├── .gitignore ├── build.gradle ├── proguard-rules.txt └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── yanzhenjie │ │ └── recyclerview │ │ ├── AdapterWrapper.java │ │ ├── Controller.java │ │ ├── ExpandableAdapter.java │ │ ├── Horizontal.java │ │ ├── LeftHorizontal.java │ │ ├── OnItemClickListener.java │ │ ├── OnItemLongClickListener.java │ │ ├── OnItemMenuClickListener.java │ │ ├── RightHorizontal.java │ │ ├── SwipeMenu.java │ │ ├── SwipeMenuBridge.java │ │ ├── SwipeMenuCreator.java │ │ ├── SwipeMenuItem.java │ │ ├── SwipeMenuLayout.java │ │ ├── SwipeMenuView.java │ │ ├── SwipeRecyclerView.java │ │ ├── touch │ │ ├── DefaultItemTouchHelper.java │ │ ├── ItemTouchHelperCallback.java │ │ ├── OnItemMoveListener.java │ │ ├── OnItemMovementListener.java │ │ └── OnItemStateChangedListener.java │ │ └── widget │ │ ├── BorderItemDecoration.java │ │ ├── ColorDrawer.java │ │ ├── DefaultItemDecoration.java │ │ ├── DefaultLoadMoreView.java │ │ ├── Drawer.java │ │ └── StickyNestedScrollView.java │ └── res │ ├── layout │ ├── support_recycler_view_item.xml │ └── support_recycler_view_load_more.xml │ ├── values-zh-rHK │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values-zh │ └── strings.xml │ └── values │ ├── attrs.xml │ ├── colors.xml │ └── strings.xml ├── supportSample ├── .gitignore ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── yanzhenjie │ │ └── recyclerview │ │ └── sample │ │ ├── App.java │ │ ├── activity │ │ ├── BaseActivity.java │ │ ├── MainActivity.java │ │ ├── expanded │ │ │ ├── ExpandableActivity.java │ │ │ ├── GridActivity.java │ │ │ ├── ListActivity.java │ │ │ ├── StaggeredActivity.java │ │ │ └── entity │ │ │ │ ├── Group.java │ │ │ │ └── GroupMember.java │ │ ├── group │ │ │ ├── GroupActivity.java │ │ │ ├── LayoutActivity.java │ │ │ └── MenuActivity.java │ │ ├── header │ │ │ └── HeaderViewActivity.java │ │ ├── load │ │ │ ├── DefaultActivity.java │ │ │ ├── DefineActivity.java │ │ │ └── RefreshLoadActivity.java │ │ ├── menu │ │ │ ├── DefineActivity.java │ │ │ ├── GridActivity.java │ │ │ ├── ListActivity.java │ │ │ ├── MenuActivity.java │ │ │ ├── VerticalActivity.java │ │ │ └── ViewTypeActivity.java │ │ ├── move │ │ │ ├── BaseDragActivity.java │ │ │ ├── DefineActivity.java │ │ │ ├── DragGridActivity.java │ │ │ ├── DragSwipeListActivity.java │ │ │ ├── DragTouchListActivity.java │ │ │ └── MoveActivity.java │ │ └── nested │ │ │ ├── CardViewActivity.java │ │ │ ├── DrawerActivity.java │ │ │ ├── NestedActivity.java │ │ │ └── ViewPagerActivity.java │ │ ├── adapter │ │ ├── BaseAdapter.java │ │ ├── DragTouchAdapter.java │ │ ├── ExpandedAdapter.java │ │ └── MainAdapter.java │ │ └── fragment │ │ └── MenuFragment.java │ └── res │ ├── drawable-hdpi │ ├── ic_action_drop_down_black.png │ ├── ic_action_drop_down_white.png │ ├── ic_action_drop_end_black.png │ ├── ic_action_drop_end_white.png │ ├── ic_action_drop_start_black.png │ └── ic_action_drop_start_white.png │ ├── drawable-xhdpi │ ├── ic_action_drop_down_black.png │ ├── ic_action_drop_down_white.png │ ├── ic_action_drop_end_black.png │ ├── ic_action_drop_end_white.png │ ├── ic_action_drop_start_black.png │ └── ic_action_drop_start_white.png │ ├── drawable-xxhdpi │ ├── header.jpg │ ├── ic_action_add.png │ ├── ic_action_close.png │ ├── ic_action_delete.png │ ├── ic_action_drop_down_black.png │ ├── ic_action_drop_down_white.png │ ├── ic_action_drop_end_black.png │ ├── ic_action_drop_end_white.png │ ├── ic_action_drop_start_black.png │ ├── ic_action_drop_start_white.png │ ├── ic_action_module_black.png │ └── ic_action_wechat.png │ ├── drawable-xxxhdpi │ ├── ic_action_drop_down_black.png │ ├── ic_action_drop_down_white.png │ ├── ic_action_drop_end_black.png │ ├── ic_action_drop_end_white.png │ ├── ic_action_drop_start_black.png │ └── ic_action_drop_start_white.png │ ├── drawable │ ├── select_expandable_black.xml │ ├── select_white.xml │ ├── selector_green.xml │ ├── selector_purple.xml │ └── selector_red.xml │ ├── layout │ ├── activity_group_layout.xml │ ├── activity_group_menu.xml │ ├── activity_menu_define.xml │ ├── activity_menu_drawer.xml │ ├── activity_menu_pager_.xml │ ├── activity_refresh_loadmore.xml │ ├── activity_scroll.xml │ ├── fragment_menu.xml │ ├── item_drag_touch.xml │ ├── item_expand_child.xml │ ├── item_expand_parent.xml │ ├── item_menu_card.xml │ ├── item_menu_define.xml │ ├── item_menu_main.xml │ ├── item_menu_sticky.xml │ ├── item_menu_vertical.xml │ ├── layout_footer.xml │ ├── layout_fotter_loadmore.xml │ ├── layout_header.xml │ ├── layout_header_switch.xml │ ├── toolbar.xml │ └── toolbar_scroll.xml │ ├── menu │ └── menu_all_activity.xml │ ├── mipmap-hdpi │ ├── 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 │ ├── array.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── x ├── .gitignore ├── build.gradle ├── proguard-rules.txt └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── yanzhenjie │ │ └── recyclerview │ │ ├── AdapterWrapper.java │ │ ├── Controller.java │ │ ├── ExpandableAdapter.java │ │ ├── Horizontal.java │ │ ├── LeftHorizontal.java │ │ ├── OnItemClickListener.java │ │ ├── OnItemLongClickListener.java │ │ ├── OnItemMenuClickListener.java │ │ ├── RightHorizontal.java │ │ ├── SwipeMenu.java │ │ ├── SwipeMenuBridge.java │ │ ├── SwipeMenuCreator.java │ │ ├── SwipeMenuItem.java │ │ ├── SwipeMenuLayout.java │ │ ├── SwipeMenuView.java │ │ ├── SwipeRecyclerView.java │ │ ├── touch │ │ ├── DefaultItemTouchHelper.java │ │ ├── ItemTouchHelperCallback.java │ │ ├── OnItemMoveListener.java │ │ ├── OnItemMovementListener.java │ │ └── OnItemStateChangedListener.java │ │ └── widget │ │ ├── BorderItemDecoration.java │ │ ├── ColorDrawer.java │ │ ├── DefaultItemDecoration.java │ │ ├── DefaultLoadMoreView.java │ │ ├── Drawer.java │ │ └── StickyNestedScrollView.java │ └── res │ ├── layout │ ├── x_recycler_view_item.xml │ └── x_recycler_view_load_more.xml │ ├── values-zh-rHK │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values-zh │ └── strings.xml │ └── values │ ├── attrs.xml │ ├── colors.xml │ └── strings.xml └── xSample ├── .gitignore ├── build.gradle └── src └── main ├── AndroidManifest.xml ├── java └── com │ └── yanzhenjie │ └── recyclerview │ └── sample │ ├── App.java │ ├── activity │ ├── BaseActivity.java │ ├── MainActivity.java │ ├── expanded │ │ ├── ExpandableActivity.java │ │ ├── GridActivity.java │ │ ├── ListActivity.java │ │ ├── StaggeredActivity.java │ │ └── entity │ │ │ ├── Group.java │ │ │ └── GroupMember.java │ ├── group │ │ ├── GroupActivity.java │ │ ├── LayoutActivity.java │ │ └── MenuActivity.java │ ├── header │ │ └── HeaderViewActivity.java │ ├── load │ │ ├── DefaultActivity.java │ │ ├── DefineActivity.java │ │ └── RefreshLoadActivity.java │ ├── menu │ │ ├── DefineActivity.java │ │ ├── GridActivity.java │ │ ├── ListActivity.java │ │ ├── MenuActivity.java │ │ ├── VerticalActivity.java │ │ └── ViewTypeActivity.java │ ├── move │ │ ├── BaseDragActivity.java │ │ ├── DefineActivity.java │ │ ├── DragGridActivity.java │ │ ├── DragSwipeListActivity.java │ │ ├── DragTouchListActivity.java │ │ └── MoveActivity.java │ └── nested │ │ ├── CardViewActivity.java │ │ ├── DrawerActivity.java │ │ ├── NestedActivity.java │ │ └── ViewPagerActivity.java │ ├── adapter │ ├── BaseAdapter.java │ ├── DragTouchAdapter.java │ ├── ExpandedAdapter.java │ └── MainAdapter.java │ └── fragment │ └── MenuFragment.java └── res ├── drawable-hdpi ├── ic_action_drop_down_black.png ├── ic_action_drop_down_white.png ├── ic_action_drop_end_black.png ├── ic_action_drop_end_white.png ├── ic_action_drop_start_black.png └── ic_action_drop_start_white.png ├── drawable-xhdpi ├── ic_action_drop_down_black.png ├── ic_action_drop_down_white.png ├── ic_action_drop_end_black.png ├── ic_action_drop_end_white.png ├── ic_action_drop_start_black.png └── ic_action_drop_start_white.png ├── drawable-xxhdpi ├── header.jpg ├── ic_action_add.png ├── ic_action_close.png ├── ic_action_delete.png ├── ic_action_drop_down_black.png ├── ic_action_drop_down_white.png ├── ic_action_drop_end_black.png ├── ic_action_drop_end_white.png ├── ic_action_drop_start_black.png ├── ic_action_drop_start_white.png ├── ic_action_module_black.png └── ic_action_wechat.png ├── drawable-xxxhdpi ├── ic_action_drop_down_black.png ├── ic_action_drop_down_white.png ├── ic_action_drop_end_black.png ├── ic_action_drop_end_white.png ├── ic_action_drop_start_black.png └── ic_action_drop_start_white.png ├── drawable ├── select_expandable_black.xml ├── select_white.xml ├── selector_green.xml ├── selector_purple.xml └── selector_red.xml ├── layout ├── activity_group_layout.xml ├── activity_group_menu.xml ├── activity_menu_define.xml ├── activity_menu_drawer.xml ├── activity_menu_pager_.xml ├── activity_refresh_loadmore.xml ├── activity_scroll.xml ├── fragment_menu.xml ├── item_drag_touch.xml ├── item_expand_child.xml ├── item_expand_parent.xml ├── item_menu_card.xml ├── item_menu_define.xml ├── item_menu_main.xml ├── item_menu_sticky.xml ├── item_menu_vertical.xml ├── layout_footer.xml ├── layout_fotter_loadmore.xml ├── layout_header.xml ├── layout_header_switch.xml ├── toolbar.xml └── toolbar_scroll.xml ├── menu └── menu_all_activity.xml ├── mipmap-hdpi ├── 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 ├── array.xml ├── colors.xml ├── dimens.xml ├── strings.xml └── styles.xml /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | .idea 3 | .externalNativeBuild 4 | .DS_Store 5 | captures 6 | build 7 | *.iml 8 | local.properties 9 | *.apk -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | apply from: "config.gradle" 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | jcenter() 7 | } 8 | 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.3.2' 11 | classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' 12 | classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4' 13 | } 14 | } 15 | 16 | allprojects { 17 | repositories { 18 | google() 19 | jcenter() 20 | } 21 | } 22 | 23 | task clean(type: Delete) { 24 | delete rootProject.buildDir 25 | } -------------------------------------------------------------------------------- /config.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | plugins = [library : 'com.android.library', 3 | application: 'com.android.application', 4 | maven : 'com.github.dcendents.android-maven', 5 | bintray : 'com.jfrog.bintray'] 6 | 7 | android = [applicationId : "com.yanzhenjie.recyclerview.sample", 8 | compileSdkVersion: 28, 9 | buildToolsVersion: "28.0.3", 10 | 11 | minSdkVersion : 14, 12 | targetSdkVersion : 28, 13 | 14 | versionCode : 13, 15 | versionName : "1.3.2",] 16 | 17 | bintray = [version : "1.3.2", 18 | 19 | siteUrl : 'https://github.com/yanzhenjie/SwipeRecyclerView', 20 | gitUrl : 'https://github.com/yanzhenjie/SwipeRecyclerView.git', 21 | 22 | group : "com.yanzhenjie.recyclerview", 23 | 24 | packaging : 'aar', 25 | name : 'SwipeRecyclerView', 26 | description : 'SwipeRecyclerView For Android', 27 | 28 | licenseName : 'The Apache Software License, Version 2.0', 29 | licenseUrl : 'http://www.apache.org/licenses/LICENSE-2.0.txt', 30 | 31 | developerId : 'yanzhenjie', 32 | developerName : 'yanzhenjie', 33 | developerEmail: 'im.yanzhenjie@foxmail.com', 34 | 35 | binrayLibrary : "", 36 | bintrayRepo : "maven", 37 | bintrayUser : 'yolanda', 38 | bintrayLicense: "Apache-2.0"] 39 | 40 | dependencies = [appCompat : 'com.android.support:appcompat-v7:28.0.0', 41 | design : 'com.android.support:design:28.0.0', 42 | cardView : 'com.android.support:cardview-v7:28.0.0', 43 | recyclerView : 'com.android.support:recyclerview-v7:28.0.0', 44 | 45 | xDesign : 'com.google.android.material:material:1.0.0', 46 | xAppCompat : 'androidx.appcompat:appcompat:1.0.2', 47 | xRecyclerView: 'androidx.recyclerview:recyclerview:1.0.0', 48 | xCardView : 'androidx.cardview:cardview:1.0.0'] 49 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Mar 11 10:20:45 CST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip -------------------------------------------------------------------------------- /image/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/1.gif -------------------------------------------------------------------------------- /image/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/10.gif -------------------------------------------------------------------------------- /image/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/11.gif -------------------------------------------------------------------------------- /image/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/2.gif -------------------------------------------------------------------------------- /image/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/3.gif -------------------------------------------------------------------------------- /image/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/4.gif -------------------------------------------------------------------------------- /image/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/5.gif -------------------------------------------------------------------------------- /image/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/6.gif -------------------------------------------------------------------------------- /image/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/7.gif -------------------------------------------------------------------------------- /image/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/8.gif -------------------------------------------------------------------------------- /image/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/image/9.gif -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':support', ':supportSample', ':x', 'xSample' -------------------------------------------------------------------------------- /support/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /support/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: rootProject.ext.plugins.library 2 | 3 | android { 4 | 5 | compileSdkVersion rootProject.ext.android.compileSdkVersion 6 | buildToolsVersion rootProject.ext.android.buildToolsVersion 7 | 8 | defaultConfig { 9 | minSdkVersion rootProject.ext.android.minSdkVersion 10 | targetSdkVersion rootProject.ext.android.targetSdkVersion 11 | consumerProguardFiles 'proguard-rules.txt' 12 | } 13 | 14 | resourcePrefix 'support_recycler' 15 | } 16 | 17 | dependencies { 18 | api rootProject.ext.dependencies.recyclerView 19 | } -------------------------------------------------------------------------------- /support/proguard-rules.txt: -------------------------------------------------------------------------------- 1 | -keepclasseswithmembers class android.support.v7.widget.RecyclerView$ViewHolder { 2 | public final android.view.View *; 3 | } -------------------------------------------------------------------------------- /support/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/Horizontal.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview; 17 | 18 | import android.view.View; 19 | import android.view.ViewGroup; 20 | import android.widget.OverScroller; 21 | 22 | /** 23 | * Created by Yan Zhenjie on 2016/7/22. 24 | */ 25 | abstract class Horizontal { 26 | 27 | private int direction; 28 | private View menuView; 29 | protected Checker mChecker; 30 | 31 | public Horizontal(int direction, View menuView) { 32 | this.direction = direction; 33 | this.menuView = menuView; 34 | mChecker = new Checker(); 35 | } 36 | 37 | public boolean canSwipe() { 38 | if (menuView instanceof ViewGroup) { 39 | return ((ViewGroup)menuView).getChildCount() > 0; 40 | } 41 | return false; 42 | } 43 | 44 | public boolean isCompleteClose(int scrollX) { 45 | int i = -getMenuView().getWidth() * getDirection(); 46 | return scrollX == 0 && i != 0; 47 | } 48 | 49 | public abstract boolean isMenuOpen(int scrollX); 50 | 51 | public abstract boolean isMenuOpenNotEqual(int scrollX); 52 | 53 | public abstract void autoOpenMenu(OverScroller scroller, int scrollX, int duration); 54 | 55 | public abstract void autoCloseMenu(OverScroller scroller, int scrollX, int duration); 56 | 57 | public abstract Checker checkXY(int x, int y); 58 | 59 | public abstract boolean isClickOnContentView(int contentViewWidth, float x); 60 | 61 | public int getDirection() { 62 | return direction; 63 | } 64 | 65 | public View getMenuView() { 66 | return menuView; 67 | } 68 | 69 | public int getMenuWidth() { 70 | return menuView.getWidth(); 71 | } 72 | 73 | public static final class Checker { 74 | 75 | public int x; 76 | public int y; 77 | public boolean shouldResetSwipe; 78 | } 79 | 80 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/LeftHorizontal.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview; 17 | 18 | import android.view.View; 19 | import android.widget.OverScroller; 20 | 21 | /** 22 | * Created by Yan Zhenjie on 2016/7/22. 23 | */ 24 | class LeftHorizontal extends Horizontal { 25 | 26 | public LeftHorizontal(View menuView) { 27 | super(SwipeRecyclerView.LEFT_DIRECTION, menuView); 28 | } 29 | 30 | @Override 31 | public boolean isMenuOpen(int scrollX) { 32 | int i = -getMenuView().getWidth() * getDirection(); 33 | return scrollX <= i && i != 0; 34 | } 35 | 36 | @Override 37 | public boolean isMenuOpenNotEqual(int scrollX) { 38 | return scrollX < -getMenuView().getWidth() * getDirection(); 39 | } 40 | 41 | @Override 42 | public void autoOpenMenu(OverScroller scroller, int scrollX, int duration) { 43 | scroller.startScroll(Math.abs(scrollX), 0, getMenuView().getWidth() - Math.abs(scrollX), 0, duration); 44 | } 45 | 46 | @Override 47 | public void autoCloseMenu(OverScroller scroller, int scrollX, int duration) { 48 | scroller.startScroll(-Math.abs(scrollX), 0, Math.abs(scrollX), 0, duration); 49 | } 50 | 51 | @Override 52 | public Checker checkXY(int x, int y) { 53 | mChecker.x = x; 54 | mChecker.y = y; 55 | mChecker.shouldResetSwipe = false; 56 | if (mChecker.x == 0) { 57 | mChecker.shouldResetSwipe = true; 58 | } 59 | if (mChecker.x >= 0) { 60 | mChecker.x = 0; 61 | } 62 | if (mChecker.x <= -getMenuView().getWidth()) { 63 | mChecker.x = -getMenuView().getWidth(); 64 | } 65 | return mChecker; 66 | } 67 | 68 | @Override 69 | public boolean isClickOnContentView(int contentViewWidth, float x) { 70 | return x > getMenuView().getWidth(); 71 | } 72 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/OnItemClickListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview; 17 | 18 | import android.view.View; 19 | 20 | /** 21 | * Created by YanZhenjie on 2017/7/21. 22 | */ 23 | public interface OnItemClickListener { 24 | 25 | /** 26 | * @param view target view. 27 | * @param adapterPosition position of item. 28 | */ 29 | void onItemClick(View view, int adapterPosition); 30 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/OnItemLongClickListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview; 17 | 18 | import android.view.View; 19 | 20 | /** 21 | * Created by YanZhenjie on 2017/7/21. 22 | */ 23 | public interface OnItemLongClickListener { 24 | 25 | /** 26 | * @param view target view. 27 | * @param adapterPosition position of item. 28 | */ 29 | void onItemLongClick(View view, int adapterPosition); 30 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/OnItemMenuClickListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview; 17 | 18 | /** 19 | * Created by Yan Zhenjie on 2016/7/26. 20 | */ 21 | public interface OnItemMenuClickListener { 22 | 23 | /** 24 | * @param menuBridge menu bridge. 25 | * @param adapterPosition position of item. 26 | */ 27 | void onItemClick(SwipeMenuBridge menuBridge, int adapterPosition); 28 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/SwipeMenuBridge.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview; 17 | 18 | /** 19 | * Created by YanZhenjie on 2017/7/20. 20 | */ 21 | public class SwipeMenuBridge { 22 | 23 | private final Controller mController; 24 | private final int mDirection; 25 | private final int mPosition; 26 | 27 | public SwipeMenuBridge(Controller controller, int direction, int position) { 28 | this.mController = controller; 29 | this.mDirection = direction; 30 | this.mPosition = position; 31 | } 32 | 33 | @SwipeRecyclerView.DirectionMode 34 | public int getDirection() { 35 | return mDirection; 36 | } 37 | 38 | /** 39 | * Get the position of button in the menu. 40 | */ 41 | public int getPosition() { 42 | return mPosition; 43 | } 44 | 45 | public void closeMenu() { 46 | mController.smoothCloseMenu(); 47 | } 48 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/SwipeMenuCreator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview; 17 | 18 | /** 19 | * Created by Yan Zhenjie on 2016/7/26. 20 | */ 21 | public interface SwipeMenuCreator { 22 | 23 | /** 24 | * Create menu for recyclerVie item. 25 | * 26 | * @param leftMenu the menu on the left. 27 | * @param rightMenu the menu on the right. 28 | * @param position the position of item. 29 | */ 30 | void onCreateMenu(SwipeMenu leftMenu, SwipeMenu rightMenu, int position); 31 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/touch/OnItemMoveListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.touch; 17 | 18 | import android.support.v7.widget.RecyclerView; 19 | 20 | /** 21 | * Created by Yolanda on 2016/4/19. 22 | */ 23 | public interface OnItemMoveListener { 24 | 25 | /** 26 | * When drag and drop the callback. 27 | * 28 | * @param srcHolder src. 29 | * @param targetHolder target. 30 | * 31 | * @return To deal with the returns true, false otherwise. 32 | */ 33 | boolean onItemMove(RecyclerView.ViewHolder srcHolder, RecyclerView.ViewHolder targetHolder); 34 | 35 | /** 36 | * When items should be removed when the callback. 37 | * 38 | * @param srcHolder src. 39 | */ 40 | void onItemDismiss(RecyclerView.ViewHolder srcHolder); 41 | 42 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/touch/OnItemMovementListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.touch; 17 | 18 | import android.support.v7.widget.RecyclerView; 19 | import android.support.v7.widget.helper.ItemTouchHelper; 20 | 21 | /** 22 | * Created by Yan Zhenjie on 2016/8/1. 23 | */ 24 | public interface OnItemMovementListener { 25 | 26 | int INVALID = 0; 27 | 28 | int LEFT = ItemTouchHelper.LEFT; 29 | 30 | int UP = ItemTouchHelper.UP; 31 | 32 | int RIGHT = ItemTouchHelper.RIGHT; 33 | 34 | int DOWN = ItemTouchHelper.DOWN; 35 | 36 | /** 37 | * Can drag and drop the ViewHolder? 38 | * 39 | * @param recyclerView {@link RecyclerView}. 40 | * @param targetViewHolder target ViewHolder. 41 | * 42 | * @return use {@link #LEFT}, {@link #UP}, {@link #RIGHT}, {@link #DOWN}. 43 | */ 44 | int onDragFlags(RecyclerView recyclerView, RecyclerView.ViewHolder targetViewHolder); 45 | 46 | /** 47 | * Can swipe and drop the ViewHolder? 48 | * 49 | * @param recyclerView {@link RecyclerView}. 50 | * @param targetViewHolder target ViewHolder. 51 | * 52 | * @return use {@link #LEFT}, {@link #UP}, {@link #RIGHT}, {@link #DOWN}. 53 | */ 54 | int onSwipeFlags(RecyclerView recyclerView, RecyclerView.ViewHolder targetViewHolder); 55 | 56 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/touch/OnItemStateChangedListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.touch; 17 | 18 | import android.support.v7.widget.RecyclerView; 19 | import android.support.v7.widget.helper.ItemTouchHelper; 20 | 21 | /** 22 | * Created by Yan Zhenjie on 2016/8/12. 23 | */ 24 | public interface OnItemStateChangedListener { 25 | 26 | /** 27 | * ItemTouchHelper is in idle state. At this state, either there is no related motion event by the user or latest 28 | * motion events have not yet triggered a swipe or drag. 29 | */ 30 | int ACTION_STATE_IDLE = ItemTouchHelper.ACTION_STATE_IDLE; 31 | 32 | /** 33 | * A View is currently being swiped. 34 | */ 35 | int ACTION_STATE_SWIPE = ItemTouchHelper.ACTION_STATE_SWIPE; 36 | 37 | /** 38 | * A View is currently being dragged. 39 | */ 40 | int ACTION_STATE_DRAG = ItemTouchHelper.ACTION_STATE_DRAG; 41 | 42 | /** 43 | * Called when the ViewHolder swiped or dragged by the ItemTouchHelper is changed. 44 | * 45 | * @param viewHolder The new ViewHolder that is being swiped or dragged. Might be null if it is cleared. 46 | * @param actionState One of {@link OnItemStateChangedListener#ACTION_STATE_IDLE}, {@link 47 | * OnItemStateChangedListener#ACTION_STATE_SWIPE} or {@link OnItemStateChangedListener#ACTION_STATE_DRAG}. 48 | */ 49 | void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState); 50 | } -------------------------------------------------------------------------------- /support/src/main/java/com/yanzhenjie/recyclerview/widget/ColorDrawer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2018 Yan Zhenjie. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.widget; 17 | 18 | import android.graphics.Color; 19 | import android.graphics.drawable.ColorDrawable; 20 | import android.support.annotation.ColorInt; 21 | 22 | /** 23 | * Created by YanZhenjie on 2018/4/20. 24 | */ 25 | class ColorDrawer extends Drawer { 26 | 27 | public ColorDrawer(int color, int width, int height) { 28 | super(new ColorDrawable(opaqueColor(color)), width, height); 29 | } 30 | 31 | /** 32 | * The target color is packaged in an opaque color. 33 | * 34 | * @param color color. 35 | * 36 | * @return color. 37 | */ 38 | @ColorInt 39 | public static int opaqueColor(@ColorInt int color) { 40 | int alpha = Color.alpha(color); 41 | if (alpha == 0) return color; 42 | int red = Color.red(color); 43 | int green = Color.green(color); 44 | int blue = Color.blue(color); 45 | return Color.argb(255, red, green, blue); 46 | } 47 | } -------------------------------------------------------------------------------- /support/src/main/res/layout/support_recycler_view_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 25 | 26 | 30 | 31 | 35 | 36 | 40 | 41 | -------------------------------------------------------------------------------- /support/src/main/res/layout/support_recycler_view_load_more.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 20 | 21 | 28 | 29 | 38 | 39 | -------------------------------------------------------------------------------- /support/src/main/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 暫時沒有數據 20 | 沒有更多數據啦 21 | 點擊加載更多 22 | 加載出錯啦,請稍後重試 23 | 正在加載更多數據,請稍後 24 | 25 | -------------------------------------------------------------------------------- /support/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 暫時沒有數據 20 | 沒有更多數據啦 21 | 點擊加載更多 22 | 加載出錯啦,請稍後重試 23 | 正在加載更多數據,請稍後 24 | 25 | -------------------------------------------------------------------------------- /support/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 暂时没有数据 20 | 没有更多数据啦 21 | 点击加载更多 22 | 加载出错啦,请稍后重试 23 | 正在加载更多数据,请稍后 24 | 25 | -------------------------------------------------------------------------------- /support/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /support/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | #FF777777 20 | 21 | #55777777 22 | #B1777777 23 | #FF777777 24 | 25 | -------------------------------------------------------------------------------- /support/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | There is no data 20 | No more data 21 | Click to load more 22 | Error, please try again 23 | Loading, please wait later 24 | 25 | -------------------------------------------------------------------------------- /supportSample/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /supportSample/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: rootProject.ext.plugins.application 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | applicationId rootProject.ext.android.applicationId 9 | minSdkVersion rootProject.ext.android.minSdkVersion 10 | targetSdkVersion rootProject.ext.android.targetSdkVersion 11 | versionCode rootProject.ext.android.versionCode 12 | versionName rootProject.ext.android.versionName 13 | } 14 | } 15 | 16 | dependencies { 17 | implementation project(':support') 18 | 19 | implementation rootProject.ext.dependencies.appCompat 20 | implementation rootProject.ext.dependencies.design 21 | implementation rootProject.ext.dependencies.recyclerView 22 | implementation rootProject.ext.dependencies.cardView 23 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/App.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample; 17 | 18 | import android.app.Application; 19 | 20 | /** 21 | * Created by Yan Zhenjie on 2016/7/27. 22 | */ 23 | public class App extends Application { 24 | 25 | private static App instance; 26 | 27 | @Override 28 | public void onCreate() { 29 | super.onCreate(); 30 | 31 | if (instance == null) { 32 | instance = this; 33 | } 34 | } 35 | 36 | public static App getInstance() { 37 | return instance; 38 | } 39 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/activity/expanded/ExpandableActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Zhenjie Yan 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.activity.expanded; 17 | 18 | import android.content.Intent; 19 | import android.os.Bundle; 20 | import android.view.View; 21 | 22 | import com.yanzhenjie.recyclerview.sample.R; 23 | import com.yanzhenjie.recyclerview.sample.activity.BaseActivity; 24 | 25 | import java.util.Arrays; 26 | import java.util.List; 27 | 28 | /** 29 | * Created by Zhenjie Yan on 1/30/19. 30 | */ 31 | public class ExpandableActivity extends BaseActivity { 32 | 33 | @Override 34 | protected void onCreate(Bundle savedInstanceState) { 35 | super.onCreate(savedInstanceState); 36 | 37 | mRecyclerView.setAdapter(mAdapter); 38 | mAdapter.notifyDataSetChanged(mDataList); 39 | } 40 | 41 | @Override 42 | public void onItemClick(View itemView, int position) { 43 | switch (position) { 44 | case 0: { 45 | startActivity(new Intent(this, ListActivity.class)); 46 | break; 47 | } 48 | case 1: { 49 | startActivity(new Intent(this, GridActivity.class)); 50 | break; 51 | } 52 | case 2: { 53 | startActivity(new Intent(this, StaggeredActivity.class)); 54 | break; 55 | } 56 | } 57 | } 58 | 59 | @Override 60 | protected List createDataList() { 61 | return Arrays.asList(getResources().getStringArray(R.array.expandable_item)); 62 | } 63 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/activity/expanded/entity/GroupMember.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 Zhenjie Yan 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.activity.expanded.entity; 17 | 18 | import android.os.Parcel; 19 | import android.os.Parcelable; 20 | 21 | /** 22 | * Created by Zhenjie Yan on 1/30/19. 23 | */ 24 | public class GroupMember implements Parcelable { 25 | 26 | private String id; 27 | private String name; 28 | 29 | public GroupMember() { 30 | } 31 | 32 | protected GroupMember(Parcel in) { 33 | id = in.readString(); 34 | name = in.readString(); 35 | } 36 | 37 | @Override 38 | public void writeToParcel(Parcel dest, int flags) { 39 | dest.writeString(id); 40 | dest.writeString(name); 41 | } 42 | 43 | @Override 44 | public int describeContents() { 45 | return 0; 46 | } 47 | 48 | public static final Creator CREATOR = new Creator() { 49 | @Override 50 | public GroupMember createFromParcel(Parcel in) { 51 | return new GroupMember(in); 52 | } 53 | 54 | @Override 55 | public GroupMember[] newArray(int size) { 56 | return new GroupMember[size]; 57 | } 58 | }; 59 | 60 | public String getId() { 61 | return id; 62 | } 63 | 64 | public void setId(String id) { 65 | this.id = id; 66 | } 67 | 68 | public String getName() { 69 | return name; 70 | } 71 | 72 | public void setName(String name) { 73 | this.name = name; 74 | } 75 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/activity/group/GroupActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.activity.group; 17 | 18 | import android.content.Intent; 19 | import android.os.Bundle; 20 | import android.view.View; 21 | 22 | import com.yanzhenjie.recyclerview.sample.R; 23 | import com.yanzhenjie.recyclerview.sample.activity.BaseActivity; 24 | 25 | import java.util.Arrays; 26 | import java.util.List; 27 | 28 | /** 29 | *

30 | * Sticky的几个效果演示。 31 | *

32 | * Created by YanZhenjie on 2017/7/22. 33 | */ 34 | public class GroupActivity extends BaseActivity { 35 | 36 | @Override 37 | protected void onCreate(Bundle savedInstanceState) { 38 | super.onCreate(savedInstanceState); 39 | 40 | mRecyclerView.setAdapter(mAdapter); 41 | mAdapter.notifyDataSetChanged(mDataList); 42 | } 43 | 44 | @Override 45 | public void onItemClick(View itemView, int position) { 46 | switch (position) { 47 | case 0: { 48 | startActivity(new Intent(this, LayoutActivity.class)); 49 | break; 50 | } 51 | case 1: { 52 | startActivity(new Intent(this, MenuActivity.class)); 53 | break; 54 | } 55 | } 56 | } 57 | 58 | @Override 59 | protected List createDataList() { 60 | return Arrays.asList(getResources().getStringArray(R.array.sticky_item)); 61 | } 62 | 63 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/activity/load/RefreshLoadActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.activity.load; 17 | 18 | import android.content.Intent; 19 | import android.os.Bundle; 20 | import android.view.View; 21 | 22 | import com.yanzhenjie.recyclerview.sample.R; 23 | import com.yanzhenjie.recyclerview.sample.activity.BaseActivity; 24 | 25 | import java.util.Arrays; 26 | import java.util.List; 27 | 28 | /** 29 | *

30 | * 加载更多的两个演示。 31 | *

32 | * Created by YanZhenjie on 2017/7/21. 33 | */ 34 | public class RefreshLoadActivity extends BaseActivity { 35 | 36 | @Override 37 | protected void onCreate(Bundle savedInstanceState) { 38 | super.onCreate(savedInstanceState); 39 | 40 | mRecyclerView.setAdapter(mAdapter); 41 | mAdapter.notifyDataSetChanged(mDataList); 42 | } 43 | 44 | @Override 45 | public void onItemClick(View itemView, int position) { 46 | switch (position) { 47 | case 0: { 48 | startActivity(new Intent(this, DefaultActivity.class)); 49 | break; 50 | } 51 | case 1: { 52 | startActivity(new Intent(this, DefineActivity.class)); 53 | break; 54 | } 55 | } 56 | } 57 | 58 | @Override 59 | protected List createDataList() { 60 | return Arrays.asList(getResources().getStringArray(R.array.refresh_item)); 61 | } 62 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/activity/menu/MenuActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.activity.menu; 17 | 18 | import android.content.Intent; 19 | import android.os.Bundle; 20 | import android.view.View; 21 | 22 | import com.yanzhenjie.recyclerview.sample.R; 23 | import com.yanzhenjie.recyclerview.sample.activity.BaseActivity; 24 | 25 | import java.util.Arrays; 26 | import java.util.List; 27 | 28 | /** 29 | *

30 | * 侧滑菜单的演示。 31 | *

32 | * Created by YanZhenjie on 2017/7/21. 33 | */ 34 | public class MenuActivity extends BaseActivity { 35 | 36 | @Override 37 | protected void onCreate(Bundle savedInstanceState) { 38 | super.onCreate(savedInstanceState); 39 | 40 | mRecyclerView.setAdapter(mAdapter); 41 | mAdapter.notifyDataSetChanged(mDataList); 42 | } 43 | 44 | @Override 45 | public void onItemClick(View itemView, int position) { 46 | switch (position) { 47 | case 0: { 48 | startActivity(new Intent(this, ListActivity.class)); 49 | break; 50 | } 51 | case 1: { 52 | startActivity(new Intent(this, GridActivity.class)); 53 | break; 54 | } 55 | case 2: { 56 | startActivity(new Intent(this, ViewTypeActivity.class)); 57 | break; 58 | } 59 | case 3: { 60 | startActivity(new Intent(this, VerticalActivity.class)); 61 | break; 62 | } 63 | case 4: { 64 | startActivity(new Intent(this, DefineActivity.class)); 65 | break; 66 | } 67 | } 68 | } 69 | 70 | @Override 71 | protected List createDataList() { 72 | return Arrays.asList(getResources().getStringArray(R.array.menu_item)); 73 | } 74 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/activity/move/MoveActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.activity.move; 17 | 18 | import android.content.Intent; 19 | import android.os.Bundle; 20 | import android.view.View; 21 | 22 | import com.yanzhenjie.recyclerview.sample.R; 23 | import com.yanzhenjie.recyclerview.sample.activity.BaseActivity; 24 | 25 | import java.util.Arrays; 26 | import java.util.List; 27 | 28 | /** 29 | *

30 | * Item拖拽和侧滑删除演示。 31 | *

32 | * Created by YanZhenjie on 2017/7/21. 33 | */ 34 | public class MoveActivity extends BaseActivity { 35 | 36 | @Override 37 | protected void onCreate(Bundle savedInstanceState) { 38 | super.onCreate(savedInstanceState); 39 | 40 | mRecyclerView.setAdapter(mAdapter); 41 | mAdapter.notifyDataSetChanged(mDataList); 42 | } 43 | 44 | @Override 45 | public void onItemClick(View itemView, int position) { 46 | switch (position) { 47 | case 0: { 48 | startActivity(new Intent(this, DragSwipeListActivity.class)); 49 | break; 50 | } 51 | case 1: { 52 | startActivity(new Intent(this, DragGridActivity.class)); 53 | break; 54 | } 55 | case 2: { 56 | startActivity(new Intent(this, DragTouchListActivity.class)); 57 | break; 58 | } 59 | case 3: { 60 | startActivity(new Intent(this, DefineActivity.class)); 61 | break; 62 | } 63 | } 64 | } 65 | 66 | @Override 67 | protected List createDataList() { 68 | return Arrays.asList(getResources().getStringArray(R.array.touch_item)); 69 | } 70 | 71 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/activity/nested/NestedActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.activity.nested; 17 | 18 | import android.content.Intent; 19 | import android.os.Bundle; 20 | import android.view.View; 21 | 22 | import com.yanzhenjie.recyclerview.sample.R; 23 | import com.yanzhenjie.recyclerview.sample.activity.BaseActivity; 24 | 25 | import java.util.Arrays; 26 | import java.util.List; 27 | 28 | /** 29 | *

30 | * 几种嵌套使用的演示。 31 | *

32 | * Created by YanZhenjie on 2017/7/21. 33 | */ 34 | public class NestedActivity extends BaseActivity { 35 | 36 | @Override 37 | protected void onCreate(Bundle savedInstanceState) { 38 | super.onCreate(savedInstanceState); 39 | 40 | mRecyclerView.setAdapter(mAdapter); 41 | mAdapter.notifyDataSetChanged(mDataList); 42 | } 43 | 44 | @Override 45 | public void onItemClick(View itemView, int position) { 46 | switch (position) { 47 | case 0: { 48 | startActivity(new Intent(this, CardViewActivity.class)); 49 | break; 50 | } 51 | case 1: { 52 | startActivity(new Intent(this, DrawerActivity.class)); 53 | break; 54 | } 55 | case 2: { 56 | startActivity(new Intent(this, ViewPagerActivity.class)); 57 | break; 58 | } 59 | } 60 | } 61 | 62 | @Override 63 | protected List createDataList() { 64 | return Arrays.asList(getResources().getStringArray(R.array.nested_item)); 65 | } 66 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/adapter/BaseAdapter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.adapter; 17 | 18 | import android.content.Context; 19 | import android.support.v7.widget.RecyclerView; 20 | import android.view.LayoutInflater; 21 | 22 | import java.util.List; 23 | 24 | /** 25 | * Created by YanZhenjie on 2017/10/3. 26 | */ 27 | public abstract class BaseAdapter extends RecyclerView.Adapter { 28 | 29 | private LayoutInflater mInflater; 30 | 31 | public BaseAdapter(Context context) { 32 | this.mInflater = LayoutInflater.from(context); 33 | } 34 | 35 | public LayoutInflater getInflater() { 36 | return mInflater; 37 | } 38 | 39 | public abstract void notifyDataSetChanged(List dataList); 40 | 41 | } -------------------------------------------------------------------------------- /supportSample/src/main/java/com/yanzhenjie/recyclerview/sample/adapter/MainAdapter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Yan Zhenjie 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.yanzhenjie.recyclerview.sample.adapter; 17 | 18 | import android.content.Context; 19 | import android.support.annotation.NonNull; 20 | import android.support.v7.widget.RecyclerView; 21 | import android.view.View; 22 | import android.view.ViewGroup; 23 | import android.widget.TextView; 24 | 25 | import com.yanzhenjie.recyclerview.sample.R; 26 | 27 | import java.util.List; 28 | 29 | 30 | /** 31 | * Created by YOLANDA on 2016/7/22. 32 | */ 33 | public class MainAdapter extends BaseAdapter { 34 | 35 | private List mDataList; 36 | 37 | public MainAdapter(Context context) { 38 | super(context); 39 | } 40 | 41 | public void notifyDataSetChanged(List dataList) { 42 | this.mDataList = dataList; 43 | super.notifyDataSetChanged(); 44 | } 45 | 46 | @Override 47 | public int getItemCount() { 48 | return mDataList == null ? 0 : mDataList.size(); 49 | } 50 | 51 | @NonNull 52 | @Override 53 | public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 54 | return new ViewHolder(getInflater().inflate(R.layout.item_menu_main, parent, false)); 55 | } 56 | 57 | @Override 58 | public void onBindViewHolder(@NonNull ViewHolder holder, int position) { 59 | holder.setData(mDataList.get(position)); 60 | } 61 | 62 | static class ViewHolder extends RecyclerView.ViewHolder { 63 | 64 | TextView tvTitle; 65 | 66 | public ViewHolder(View itemView) { 67 | super(itemView); 68 | tvTitle = itemView.findViewById(R.id.tv_title); 69 | } 70 | 71 | public void setData(String title) { 72 | this.tvTitle.setText(title); 73 | } 74 | } 75 | 76 | } -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-hdpi/ic_action_drop_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-hdpi/ic_action_drop_down_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-hdpi/ic_action_drop_down_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-hdpi/ic_action_drop_down_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-hdpi/ic_action_drop_end_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-hdpi/ic_action_drop_end_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-hdpi/ic_action_drop_end_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-hdpi/ic_action_drop_end_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-hdpi/ic_action_drop_start_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-hdpi/ic_action_drop_start_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-hdpi/ic_action_drop_start_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-hdpi/ic_action_drop_start_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xhdpi/ic_action_drop_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xhdpi/ic_action_drop_down_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xhdpi/ic_action_drop_down_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xhdpi/ic_action_drop_down_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xhdpi/ic_action_drop_end_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xhdpi/ic_action_drop_end_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xhdpi/ic_action_drop_end_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xhdpi/ic_action_drop_end_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xhdpi/ic_action_drop_start_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xhdpi/ic_action_drop_start_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xhdpi/ic_action_drop_start_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xhdpi/ic_action_drop_start_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/header.jpg -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_add.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_close.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_delete.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_down_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_down_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_down_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_end_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_end_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_end_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_end_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_start_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_start_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_start_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_drop_start_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_module_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_module_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxhdpi/ic_action_wechat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxhdpi/ic_action_wechat.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_down_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_down_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_down_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_end_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_end_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_end_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_end_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_start_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_start_black.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_start_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanzhenjie/SwipeRecyclerView/69aa14d05da09beaeb880240c62f7de6f4f1bb39/supportSample/src/main/res/drawable-xxxhdpi/ic_action_drop_start_white.png -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable/select_expandable_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable/select_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable/selector_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable/selector_purple.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /supportSample/src/main/res/drawable/selector_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /supportSample/src/main/res/layout/activity_group_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 23 | 24 | 25 | 26 | 31 | 32 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /supportSample/src/main/res/layout/activity_refresh_loadmore.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 23 | 24 | 25 | 26 | 31 | 32 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /supportSample/src/main/res/layout/activity_scroll.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 23 | 24 | 25 | 26 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /supportSample/src/main/res/layout/fragment_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 23 | -------------------------------------------------------------------------------- /supportSample/src/main/res/layout/item_drag_touch.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 23 | 24 | 35 | 36 | 45 | 46 | 57 | 58 | -------------------------------------------------------------------------------- /supportSample/src/main/res/layout/item_expand_child.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 25 | 33 | 34 | -------------------------------------------------------------------------------- /supportSample/src/main/res/layout/item_expand_parent.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 24 | 25 | 33 | 34 | 42 | 43 | -------------------------------------------------------------------------------- /supportSample/src/main/res/layout/item_menu_define.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 27 | 28 | 33 | 34 |