Skip to content

Commit 010871f

Browse files
committed
add 增加自动加载更多demo
1 parent 9cb233f commit 010871f

File tree

5 files changed

+81
-15
lines changed

5 files changed

+81
-15
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "me.jingbin.byrecyclerview"
99
minSdkVersion 16
1010
targetSdkVersion 29
11-
versionCode 9
12-
versionName "1.2.0"
11+
versionCode 10
12+
versionName "1.3.0"
1313
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1414
multiDexEnabled true
1515
}

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
<activity android:name=".activity.StickyRvActivity" />
4646
<activity android:name=".activity.HorizontalGridDividerActivity" />
4747
<activity android:name=".activity.ItemPayloadActivity" />
48+
<activity android:name=".activity.LoadMoreActivity" />
4849
</application>
4950

5051
</manifest>

app/src/main/java/me/jingbin/byrecyclerview/MainActivity.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import me.jingbin.byrecyclerview.activity.HeaderFooterActivity;
2121
import me.jingbin.byrecyclerview.activity.ItemClickActivity;
2222
import me.jingbin.byrecyclerview.activity.ItemPayloadActivity;
23+
import me.jingbin.byrecyclerview.activity.LoadMoreActivity;
2324
import me.jingbin.byrecyclerview.activity.SecondTypeActivity;
2425
import me.jingbin.byrecyclerview.activity.StateViewActivity;
2526
import me.jingbin.byrecyclerview.activity.StickyItemActivity;
@@ -39,6 +40,7 @@ public class MainActivity extends AppCompatActivity {
3940

4041
private final List<String> list = Arrays.asList(
4142
"下拉刷新、加载更多",
43+
"自动加载更多、松手加载更多",
4244
"Add HeaderView/FooterView",
4345
"设置StateView",
4446
"item 点击/长按",
@@ -78,37 +80,40 @@ public void onSingleClick(View v, int position) {
7880
case 0:// 下拉刷新、加载更多
7981
SecondTypeActivity.start(v.getContext(), "refreshLoadMore");
8082
break;
81-
case 1:// Add HeaderView/FooterView
83+
case 1:// 自动加载更多、松手加载更多
84+
startActivity(new Intent(MainActivity.this, LoadMoreActivity.class));
85+
break;
86+
case 2:// Add HeaderView/FooterView
8287
startActivity(new Intent(MainActivity.this, HeaderFooterActivity.class));
8388
break;
84-
case 2:// 设置StateView
89+
case 3:// 设置StateView
8590
startActivity(new Intent(MainActivity.this, StateViewActivity.class));
8691
break;
87-
case 3:// item 点击/长按
92+
case 4:// item 点击/长按
8893
startActivity(new Intent(MainActivity.this, ItemClickActivity.class));
8994
break;
90-
case 4:// item 局部刷新
95+
case 5:// item 局部刷新
9196
startActivity(new Intent(MainActivity.this, ItemPayloadActivity.class));
9297
break;
93-
case 5:// adapter (多类型、databinding、ListView)
98+
case 6:// adapter (多类型、databinding、ListView)
9499
SecondTypeActivity.start(v.getContext(), "adapter");
95100
break;
96-
case 6:// 万能分割线
101+
case 7:// 万能分割线
97102
SecondTypeActivity.start(v.getContext(), "Divider");
98103
break;
99-
case 7:// item 悬浮置顶
104+
case 8:// item 悬浮置顶
100105
startActivity(new Intent(MainActivity.this, StickyItemActivity.class));
101106
break;
102-
case 8:// Skeleton 骨架图
107+
case 9:// Skeleton 骨架图
103108
SecondTypeActivity.start(v.getContext(), "Skeleton");
104109
break;
105-
case 9:// CoordinatorLayout + RecyclerView 使用示例
110+
case 10:// CoordinatorLayout + RecyclerView 使用示例
106111
startActivity(new Intent(MainActivity.this, AppBarLayoutActivity.class));
107112
break;
108-
case 10:// FlexboxLayoutManager
113+
case 11:// FlexboxLayoutManager
109114
startActivity(new Intent(MainActivity.this, FlexBoxActivity.class));
110115
break;
111-
case 11:// RecyclerView 嵌套滑动置顶
116+
case 12:// RecyclerView 嵌套滑动置顶
112117
startActivity(new Intent(MainActivity.this, StickyRvActivity.class));
113118
break;
114119
default:
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package me.jingbin.byrecyclerview.activity;
2+
3+
import android.os.Bundle;
4+
5+
import androidx.fragment.app.Fragment;
6+
7+
import java.util.ArrayList;
8+
9+
import me.jingbin.byrecyclerview.R;
10+
import me.jingbin.byrecyclerview.app.BaseActivity;
11+
import me.jingbin.byrecyclerview.databinding.ActivityRefreshBinding;
12+
import me.jingbin.byrecyclerview.fragment.RefreshFragment;
13+
import me.jingbin.byrecyclerview.fragment.SwipeRefreshFragment;
14+
import me.jingbin.byrecyclerview.view.MyFragmentPagerAdapter;
15+
16+
/**
17+
* @author jingbin
18+
*/
19+
public class LoadMoreActivity extends BaseActivity<ActivityRefreshBinding> {
20+
21+
private ArrayList<String> mTitleList = new ArrayList<>(2);
22+
private ArrayList<Fragment> mFragments = new ArrayList<>(2);
23+
24+
@Override
25+
protected void onCreate(Bundle savedInstanceState) {
26+
super.onCreate(savedInstanceState);
27+
setContentView(R.layout.activity_refresh);
28+
setTitle("自动加载更多、松手加载更多");
29+
30+
initView();
31+
}
32+
33+
private void initView() {
34+
initFragmentList();
35+
MyFragmentPagerAdapter myAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), mFragments, mTitleList);
36+
binding.viewPager.setAdapter(myAdapter);
37+
binding.viewPager.setOffscreenPageLimit(1);
38+
myAdapter.notifyDataSetChanged();
39+
binding.tabLayout.setupWithViewPager(binding.viewPager);
40+
}
41+
42+
private void initFragmentList() {
43+
mTitleList.clear();
44+
mTitleList.add("自动加载更多");
45+
mTitleList.add("松手加载更多");
46+
mFragments.add(RefreshFragment.newInstance("auto"));
47+
mFragments.add(RefreshFragment.newInstance(""));
48+
}
49+
50+
}

app/src/main/java/me/jingbin/byrecyclerview/fragment/RefreshFragment.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ protected void loadData() {
7575
}
7676

7777
private void initAdapter() {
78+
// 是否是自动加载更多
79+
boolean isAutoLoadMore = "auto".equals(mType);
80+
7881
recyclerView = getView(R.id.recyclerView);
7982
mAdapter = new DataAdapter(DataUtil.get(activity, 10));
8083
LinearLayoutManager layoutManager = new LinearLayoutManager(activity);
@@ -83,13 +86,20 @@ private void initAdapter() {
8386
// 加了分割线,滚动条才会置顶
8487
recyclerView.addItemDecoration(new SpacesItemDecoration(recyclerView.getContext(), SpacesItemDecoration.VERTICAL, 1));
8588
recyclerView.setAdapter(mAdapter);
86-
recyclerView.setOnLoadMoreListener(new ByRecyclerView.OnLoadMoreListener() {
89+
/**
90+
* 设置自动加载更多一定要通过 【setOnLoadMoreListener】 方式设置!
91+
* isAutoLoadMore: 是否自动加载更多,之后的打开/关闭加载更多还是使用 setLoadMoreEnabled()
92+
* 2: 滑动到倒数第 2 条数据加载,默认1
93+
*
94+
* 也可以使用:setOnLoadMoreListener(boolean isAutoLoadMore, OnLoadMoreListener listener)
95+
*/
96+
recyclerView.setOnLoadMoreListener(isAutoLoadMore, 2, new ByRecyclerView.OnLoadMoreListener() {
8797
@Override
8898
public void onLoadMore() {
8999
recyclerView.postDelayed(new Runnable() {
90100
@Override
91101
public void run() {
92-
if (page == 3) {
102+
if (page == 4) {
93103
recyclerView.loadMoreEnd();
94104
return;
95105
}

0 commit comments

Comments
 (0)