diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 7ac24c7..191fb8b 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -9,6 +9,7 @@
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index adb1f97..3be1ace 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -37,7 +37,7 @@
-
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 88a49b7..57fe589 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -4,6 +4,7 @@
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 74b1a0a..f436115 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -29,4 +29,5 @@ dependencies {
compile 'com.google.code.gson:gson:2.7'
compile 'com.squareup.picasso:picasso:2.5.2'
testCompile 'junit:junit:4.12'
+ compile project(':stickyheaderview-rv')
}
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/ItemHeader.java b/app/src/main/java/tellh/com/recyclerstickyheaderview/ItemHeader.java
index e541651..eebfcdc 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/ItemHeader.java
+++ b/app/src/main/java/tellh/com/recyclerstickyheaderview/ItemHeader.java
@@ -1,5 +1,8 @@
package tellh.com.recyclerstickyheaderview;
+import tellh.com.stickyheaderview_rv.adapter.DataBean;
+import tellh.com.stickyheaderview_rv.adapter.StickyHeaderViewAdapter;
+
/**
* Created by tlh on 2017/1/22 :)
*/
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/ItemHeaderViewBinder.java b/app/src/main/java/tellh/com/recyclerstickyheaderview/ItemHeaderViewBinder.java
index 4d17e6c..4ee8f4b 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/ItemHeaderViewBinder.java
+++ b/app/src/main/java/tellh/com/recyclerstickyheaderview/ItemHeaderViewBinder.java
@@ -3,6 +3,9 @@
import android.view.View;
import android.widget.TextView;
+import tellh.com.stickyheaderview_rv.adapter.StickyHeaderViewAdapter;
+import tellh.com.stickyheaderview_rv.adapter.ViewBinder;
+
/**
* Created by tlh on 2017/1/22 :)
*/
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/MainActivity.java b/app/src/main/java/tellh/com/recyclerstickyheaderview/MainActivity.java
index a7c8f89..ba0acc0 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/MainActivity.java
+++ b/app/src/main/java/tellh/com/recyclerstickyheaderview/MainActivity.java
@@ -14,6 +14,9 @@
import java.util.Comparator;
import java.util.List;
+import tellh.com.stickyheaderview_rv.adapter.DataBean;
+import tellh.com.stickyheaderview_rv.adapter.StickyHeaderViewAdapter;
+
public class MainActivity extends AppCompatActivity {
private RecyclerView rv;
private StickyHeaderViewAdapter adapter;
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/User.java b/app/src/main/java/tellh/com/recyclerstickyheaderview/User.java
index 21fe459..308ba46 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/User.java
+++ b/app/src/main/java/tellh/com/recyclerstickyheaderview/User.java
@@ -1,5 +1,8 @@
package tellh.com.recyclerstickyheaderview;
+import tellh.com.stickyheaderview_rv.adapter.DataBean;
+import tellh.com.stickyheaderview_rv.adapter.StickyHeaderViewAdapter;
+
public class User extends DataBean {
private String login;
private int id;
@@ -49,7 +52,7 @@ public void setShouldSticky(boolean shouldSticky) {
}
@Override
- protected boolean shouldSticky() {
+ public boolean shouldSticky() {
return shouldSticky;
}
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/UserItemViewBinder.java b/app/src/main/java/tellh/com/recyclerstickyheaderview/UserItemViewBinder.java
index 32b84fc..3a5bf98 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/UserItemViewBinder.java
+++ b/app/src/main/java/tellh/com/recyclerstickyheaderview/UserItemViewBinder.java
@@ -6,6 +6,9 @@
import com.squareup.picasso.Picasso;
+import tellh.com.stickyheaderview_rv.adapter.StickyHeaderViewAdapter;
+import tellh.com.stickyheaderview_rv.adapter.ViewBinder;
+
/**
* Created by tlh on 2017/1/22 :)
*/
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index d35e642..091d3cb 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -5,7 +5,7 @@
android:layout_height="match_parent"
tools:context="tellh.com.recyclerstickyheaderview.MainActivity">
-
@@ -16,5 +16,5 @@
android:layout_height="match_parent"
android:background="@android:color/white"
android:scrollbars="vertical" />
-
+
diff --git a/build.gradle b/build.gradle
index a3330d4..8582e43 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,6 +9,9 @@ buildscript {
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
+
+ // JitPack
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
}
}
diff --git a/settings.gradle b/settings.gradle
index e7b4def..3b1985d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app'
+include ':app', ':stickyheaderview-rv'
diff --git a/stickyheaderview-rv/.gitignore b/stickyheaderview-rv/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/stickyheaderview-rv/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/stickyheaderview-rv/build.gradle b/stickyheaderview-rv/build.gradle
new file mode 100644
index 0000000..aeb2e30
--- /dev/null
+++ b/stickyheaderview-rv/build.gradle
@@ -0,0 +1,35 @@
+apply plugin: 'com.android.library'
+// JitPack
+apply plugin: 'com.github.dcendents.android-maven'
+group='com.github.TellH'
+android {
+ compileSdkVersion 25
+ buildToolsVersion "25.0.0"
+
+ defaultConfig {
+ minSdkVersion 14
+ targetSdkVersion 25
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+ androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+ exclude group: 'com.android.support', module: 'support-annotations'
+ })
+ compile 'com.android.support:appcompat-v7:25.1.0'
+ compile 'com.android.support:design:25.1.0'
+ compile "com.android.support:recyclerview-v7:25.1.0"
+ testCompile 'junit:junit:4.12'
+}
diff --git a/stickyheaderview-rv/proguard-rules.pro b/stickyheaderview-rv/proguard-rules.pro
new file mode 100644
index 0000000..3421d58
--- /dev/null
+++ b/stickyheaderview-rv/proguard-rules.pro
@@ -0,0 +1,17 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in D:\AndroidSDK\AndroidStudio/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/stickyheaderview-rv/src/androidTest/java/tellh/com/stickyheaderview_rv/ExampleInstrumentedTest.java b/stickyheaderview-rv/src/androidTest/java/tellh/com/stickyheaderview_rv/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..3e5d791
--- /dev/null
+++ b/stickyheaderview-rv/src/androidTest/java/tellh/com/stickyheaderview_rv/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package tellh.com.stickyheaderview_rv;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() throws Exception {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getTargetContext();
+
+ assertEquals("tellh.com.stickyheaderview_rv.test", appContext.getPackageName());
+ }
+}
diff --git a/stickyheaderview-rv/src/main/AndroidManifest.xml b/stickyheaderview-rv/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..9d80efa
--- /dev/null
+++ b/stickyheaderview-rv/src/main/AndroidManifest.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/StickyHeaderView.java b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/StickyHeaderView.java
similarity index 94%
rename from app/src/main/java/tellh/com/recyclerstickyheaderview/StickyHeaderView.java
rename to stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/StickyHeaderView.java
index 468f8fd..c82af3d 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/StickyHeaderView.java
+++ b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/StickyHeaderView.java
@@ -1,4 +1,4 @@
-package tellh.com.recyclerstickyheaderview;
+package tellh.com.stickyheaderview_rv;
import android.content.Context;
import android.graphics.Color;
@@ -14,14 +14,18 @@
import java.util.List;
import java.util.Stack;
+import tellh.com.stickyheaderview_rv.adapter.DataBean;
+import tellh.com.stickyheaderview_rv.adapter.StickyHeaderViewAdapter;
+import tellh.com.stickyheaderview_rv.adapter.ViewBinder;
+
/**
* Created by tlh on 2017/1/21 :)
*/
public class StickyHeaderView extends FrameLayout {
private static final String TAG = "StickyHeaderView";
- private FrameLayout mHeaderContainer;
private boolean hasInit = false;
+ private FrameLayout mHeaderContainer;
private RecyclerView mRecyclerView;
private int mHeaderHeight = -1;
private StickyHeaderViewAdapter adapter;
@@ -77,7 +81,7 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
return;
List displayList = adapter.getDisplayList();
if (stickyHeaderPositionStack.isEmpty())
- stickyHeaderPositionStack.push(findFirstVisibleStickyHeaderPosition(adapter.displayList, 0));
+ stickyHeaderPositionStack.push(findFirstVisibleStickyHeaderPosition(displayList, 0));
int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
int firstVisibleStickyHeaderPosition = findFirstVisibleStickyHeaderPosition(displayList, firstVisibleItemPosition);
int currentStickyHeaderPosition = stickyHeaderPositionStack.peek();
@@ -91,14 +95,14 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (firstVisibleStickyHeader == null)
return;
int headerTop = firstVisibleStickyHeader.getTop();
- if (headerTop > 0 && headerTop <= mHeaderHeight) {
+ if (headerTop > 0 && headerTop <= mHeaderHeight) { //吸顶正在更替的状态
mHeaderContainer.setY(-(mHeaderHeight - headerTop));
if (firstVisibleStickyHeaderPosition == currentStickyHeaderPosition) {
stickyHeaderPositionStack.pop();
if (!stickyHeaderPositionStack.isEmpty())
updateHeaderView(stickyHeaderPositionStack.peek());
}
- } else if (headerTop <= 0) {
+ } else if (headerTop <= 0) { //吸顶稳定在最上方的状态
mHeaderContainer.setY(0);
updateHeaderView(firstVisibleItemPosition);
}
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/DataBean.java b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/DataBean.java
similarity index 85%
rename from app/src/main/java/tellh/com/recyclerstickyheaderview/DataBean.java
rename to stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/DataBean.java
index 97066d3..55860b9 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/DataBean.java
+++ b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/DataBean.java
@@ -1,4 +1,4 @@
-package tellh.com.recyclerstickyheaderview;
+package tellh.com.stickyheaderview_rv.adapter;
import android.support.v4.util.SparseArrayCompat;
@@ -13,7 +13,7 @@ public final IViewBinder provideViewBinder(StickyHeaderViewAdapter adapter, Spar
return viewBinder;
}
- protected boolean shouldSticky() {
+ public boolean shouldSticky() {
return false;
}
}
\ No newline at end of file
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/IViewBinder.java b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/IViewBinder.java
similarity index 81%
rename from app/src/main/java/tellh/com/recyclerstickyheaderview/IViewBinder.java
rename to stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/IViewBinder.java
index dc8940d..7864d83 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/IViewBinder.java
+++ b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/IViewBinder.java
@@ -1,4 +1,4 @@
-package tellh.com.recyclerstickyheaderview;
+package tellh.com.stickyheaderview_rv.adapter;
import android.view.View;
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/IViewBinderProvider.java b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/IViewBinderProvider.java
similarity index 82%
rename from app/src/main/java/tellh/com/recyclerstickyheaderview/IViewBinderProvider.java
rename to stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/IViewBinderProvider.java
index 6c4c05f..b61e997 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/IViewBinderProvider.java
+++ b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/IViewBinderProvider.java
@@ -1,4 +1,4 @@
-package tellh.com.recyclerstickyheaderview;
+package tellh.com.stickyheaderview_rv.adapter;
import android.support.v4.util.SparseArrayCompat;
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/LayoutItemType.java b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/LayoutItemType.java
similarity index 65%
rename from app/src/main/java/tellh/com/recyclerstickyheaderview/LayoutItemType.java
rename to stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/LayoutItemType.java
index 5a3ce99..4dbeeea 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/LayoutItemType.java
+++ b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/LayoutItemType.java
@@ -1,4 +1,4 @@
-package tellh.com.recyclerstickyheaderview;
+package tellh.com.stickyheaderview_rv.adapter;
public interface LayoutItemType {
int getItemLayoutId(StickyHeaderViewAdapter adapter);
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/StickyHeaderViewAdapter.java b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/StickyHeaderViewAdapter.java
similarity index 98%
rename from app/src/main/java/tellh/com/recyclerstickyheaderview/StickyHeaderViewAdapter.java
rename to stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/StickyHeaderViewAdapter.java
index 46bfd41..7deee2b 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/StickyHeaderViewAdapter.java
+++ b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/StickyHeaderViewAdapter.java
@@ -1,4 +1,4 @@
-package tellh.com.recyclerstickyheaderview;
+package tellh.com.stickyheaderview_rv.adapter;
import android.support.annotation.LayoutRes;
import android.support.v4.util.SparseArrayCompat;
diff --git a/app/src/main/java/tellh/com/recyclerstickyheaderview/ViewBinder.java b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/ViewBinder.java
similarity index 93%
rename from app/src/main/java/tellh/com/recyclerstickyheaderview/ViewBinder.java
rename to stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/ViewBinder.java
index bf3d522..f83cd5d 100644
--- a/app/src/main/java/tellh/com/recyclerstickyheaderview/ViewBinder.java
+++ b/stickyheaderview-rv/src/main/java/tellh/com/stickyheaderview_rv/adapter/ViewBinder.java
@@ -1,4 +1,4 @@
-package tellh.com.recyclerstickyheaderview;
+package tellh.com.stickyheaderview_rv.adapter;
import android.support.annotation.IdRes;
import android.support.v7.widget.RecyclerView;
diff --git a/stickyheaderview-rv/src/main/res/values/strings.xml b/stickyheaderview-rv/src/main/res/values/strings.xml
new file mode 100644
index 0000000..bff6427
--- /dev/null
+++ b/stickyheaderview-rv/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ StickyHeaderView-rv
+
diff --git a/stickyheaderview-rv/src/test/java/tellh/com/stickyheaderview_rv/ExampleUnitTest.java b/stickyheaderview-rv/src/test/java/tellh/com/stickyheaderview_rv/ExampleUnitTest.java
new file mode 100644
index 0000000..8ae0392
--- /dev/null
+++ b/stickyheaderview-rv/src/test/java/tellh/com/stickyheaderview_rv/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package tellh.com.stickyheaderview_rv;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() throws Exception {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file