Skip to content

Commit

Permalink
修复刷新的一些bug
Browse files Browse the repository at this point in the history
  • Loading branch information
XinYiWorld committed May 20, 2017
1 parent 51b8b06 commit ebd319a
Show file tree
Hide file tree
Showing 20 changed files with 274 additions and 162 deletions.
Binary file modified .gradle/2.14.1/taskArtifacts/cache.properties.lock
Binary file not shown.
Binary file modified .gradle/2.14.1/taskArtifacts/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/2.14.1/taskArtifacts/fileSnapshots.bin
Binary file not shown.
Binary file not shown.
Binary file modified .gradle/2.14.1/taskArtifacts/taskArtifacts.bin
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
324 changes: 212 additions & 112 deletions .idea/workspace.xml

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions build/intermediates/dex-cache/cache.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,22 @@
sha1="debf30ce0a7560396b6235edef77e447006454c2">
<dex dex="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\transforms\dex\debug\folders\1000\10\com.android.support-recyclerview-v7-23.3.0_067195f18b95e8375354eaab75ddc805bcfda521\classes.dex" />
</item>
<item
is-multidex="true"
jar="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\incremental-classes\debug\instant-run-bootstrap.jar"
jumboMode="true"
optimize="true"
revision="25.0.1"
sha1="80c5630e1d3b8a7e0bce8e2839319479fc80c0b0">
<dex dex="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\transforms\dex\debug\folders\1000\10\instant-run-bootstrap_481909628a2c2acfebcbebf06629022aa21c6af0\classes.dex" />
</item>
<item
is-multidex="true"
jar="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\incremental-runtime-classes\debug\instant-run.jar"
jumboMode="true"
optimize="true"
revision="25.0.1"
sha1="b873dfdf30423ebb20181d97d64772807ad21937">
sha1="d8a1442e05e8e10607709e144ad2c89f0ae15490">
<dex dex="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\transforms\dex\debug\folders\1000\10\instant-run_60d903a5ac4a67793fcd4d56d51422b5ef47640f\classes.dex" />
</item>
<item
Expand Down Expand Up @@ -46,15 +55,6 @@
sha1="4da5a4d697d32497c6f85567a5112e62fdfd0676">
<dex dex="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\transforms\dex\debug\folders\1000\10\internal_impl-23.3.0_327d204468bb6e0873099977df3d5631e66fde02\classes.dex" />
</item>
<item
is-multidex="true"
jar="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\incremental-classes\debug\instant-run-bootstrap.jar"
jumboMode="true"
optimize="true"
revision="25.0.1"
sha1="4fb2dab7b9936fc91b1ef6bd798a3029e0a33485">
<dex dex="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\transforms\dex\debug\folders\1000\10\instant-run-bootstrap_481909628a2c2acfebcbebf06629022aa21c6af0\classes.dex" />
</item>
<item
is-multidex="true"
jar="D:\DevWork\Code\Demos\QD\PublishedCode\CZSuperAdapter\samples\build\intermediates\exploded-aar\com.android.support\support-v4\23.3.0\jars\classes.jar"
Expand Down
16 changes: 8 additions & 8 deletions libary/libary.iml
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
Expand All @@ -83,6 +75,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
* 复用多视图来实现刷新、加载更多、头、脚,最蛋痛的还是复用的问题。
* //TODO 复用的问题
* 1》》使用setIsRecyclable(false)勉强可以解决复用的问题,但是影响性能。
* 3)在adapter里对recyclerView的item设置点击事件后,再对recyclerView本身设置touch事件时,捕捉不到Down这个action。
* 4)点击事件与刷新冲突(未解决)
*/

public class CZSuperAdapter<T> extends ICRUDAdapter<T> implements IAddTypeMaker,IRemoveTypeMaker {
Expand Down Expand Up @@ -160,6 +162,8 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (multiTypeMaker.getType()/*getViewHolderType(getItemViewType(position))*/){
case MultiTypeMaker.TYPE_HEADER: //头布局
multiTypeMaker = typeManager.getHeader(position - refreshControllerCount);
commonViewHolder.setOnItemClickListener(null,position - refreshControllerCount);
commonViewHolder.setOnItemLongClickListener(null,position - refreshControllerCount);
multiTypeMaker.bindViewHolder(commonViewHolder, multiTypeMaker.getData(), MultiTypeMaker.TYPE_HEADER, position - refreshControllerCount);
break;
case MultiTypeMaker.TYPE_NORMAL: //主体布局
Expand All @@ -169,20 +173,24 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
}
((CommonViewHolder) holder).getParent().setVisibility(View.VISIBLE);

multiTypeMaker.bindViewHolder(commonViewHolder, mNormalData.get(normalViewStartPosition), multiTypeMaker.getType(normalViewStartPosition), normalViewStartPosition);
//绑定点击事件
if(onItemClickListener != null){
commonViewHolder.setOnItemClickListener(onItemClickListener,normalViewStartPosition);
}
if(onItemLongClickListener != null){
commonViewHolder.setOnItemLongClickListener(onItemLongClickListener,normalViewStartPosition);
}
multiTypeMaker.bindViewHolder(commonViewHolder, mNormalData.get(normalViewStartPosition), multiTypeMaker.getType(normalViewStartPosition), normalViewStartPosition);
break;
case MultiTypeMaker.TYPE_FOOTER: //脚布局 (有可能被主体数据利用了)
multiTypeMaker = typeManager.getFooter(position - mNormalData.size() - refreshControllerCount - headerCount);
commonViewHolder.setOnItemClickListener(null,position - mNormalData.size() - refreshControllerCount - headerCount);
commonViewHolder.setOnItemLongClickListener(null,position - mNormalData.size() - refreshControllerCount - headerCount);
multiTypeMaker.bindViewHolder(commonViewHolder,multiTypeMaker.getData(),MultiTypeMaker.TYPE_FOOTER,position - mNormalData.size() - refreshControllerCount - headerCount);
break;
default: //刷新或加载更多
commonViewHolder.setOnItemClickListener(null,position);
commonViewHolder.setOnItemLongClickListener(null,position);
multiTypeMaker.bindViewHolder(commonViewHolder, null, multiTypeMaker.getType(position), position);
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ public boolean onTouch(View view, MotionEvent motionEvent) {
} else {
if (mRefreshingState == RefreshingState.RELEASE_TO_REFRESH) { //防止箭头反复旋转
setRefreshingState(mRefreshingStateNode.set(RefreshingState.RELEASE_TO_REFRESH, RefreshingState.PULL_TO_REFRESH));
}else if(mRefreshingState == RefreshingState.NONE){ //一定要加这个从NONE到PULL_TO_REFRESH刷新的状态转换
setRefreshingState(mRefreshingStateNode.set(RefreshingState.NONE, RefreshingState.PULL_TO_REFRESH));
}
}
startY = currentY; //注意起点的传递
Expand Down
2 changes: 1 addition & 1 deletion samples/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ android {

defaultConfig {
applicationId "xinyi.com.samples"
minSdkVersion 9
minSdkVersion 12
targetSdkVersion 25
versionCode 1
versionName "1.0"
Expand Down
16 changes: 8 additions & 8 deletions samples/samples.iml
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
Expand All @@ -82,6 +74,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
Expand Down
43 changes: 22 additions & 21 deletions samples/src/main/java/xinyi/com/samples/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import com.xinyi.czsuperadapter.AVLoadingIndicatorView;
import com.xinyi.czsuperadapter.interfaces.LoaderListener;
import com.xinyi.czsuperadapter.interfaces.RefreshListener;
import com.xinyi.czsuperadapter.main.CZSuperAdapter;
import com.xinyi.czsuperadapter.main.CommonViewHolder;
import com.xinyi.czsuperadapter.main.LoadController;
Expand Down Expand Up @@ -102,27 +103,27 @@ public boolean onItemLongClick(View convertView, int position) {
// recyclerView.requestLayout();


// refreshController = new RefreshController.Builder().setOnRefreshListener(new RefreshListener() {
// @Override
// public void onRefresh() {
//// handler.postDelayed(new Runnable() {
//// @Override
//// public void run() {
// refreshController.finishRefresh();
//// }
//// }, 1000);
// }
//
// @Override
// public void onPull(int distance) {
//
// }
// })
// .setRefreshIndicatorStyle(AVLoadingIndicatorView.Pacman)
// .setRefreshIndicatorColor(Color.RED)
// .build().create();
//
// mAdapter.setRefreshController(refreshController);
refreshController = new RefreshController.Builder().setOnRefreshListener(new RefreshListener() {
@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
refreshController.finishRefresh();
}
}, 1000);
}

@Override
public void onPull(int distance) {

}
})
.setRefreshIndicatorStyle(AVLoadingIndicatorView.Pacman)
.setRefreshIndicatorColor(Color.RED)
.build().create();

mAdapter.setRefreshController(refreshController);


loadController = new LoadController.Builder().setOnLoaderListener(new LoaderListener() {
Expand Down
3 changes: 2 additions & 1 deletion samples/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@
<android.support.v7.widget.RecyclerView
android:id="@+id/rcv"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
android:layout_height="match_parent"
></android.support.v7.widget.RecyclerView>
</RelativeLayout>

0 comments on commit ebd319a

Please sign in to comment.