Skip to content

Commit

Permalink
add 增加自动加载更多demo
Browse files Browse the repository at this point in the history
  • Loading branch information
youlookwhat committed Dec 22, 2021
1 parent 9cb233f commit 010871f
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 15 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ android {
applicationId "me.jingbin.byrecyclerview"
minSdkVersion 16
targetSdkVersion 29
versionCode 9
versionName "1.2.0"
versionCode 10
versionName "1.3.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
<activity android:name=".activity.StickyRvActivity" />
<activity android:name=".activity.HorizontalGridDividerActivity" />
<activity android:name=".activity.ItemPayloadActivity" />
<activity android:name=".activity.LoadMoreActivity" />
</application>

</manifest>
27 changes: 16 additions & 11 deletions app/src/main/java/me/jingbin/byrecyclerview/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import me.jingbin.byrecyclerview.activity.HeaderFooterActivity;
import me.jingbin.byrecyclerview.activity.ItemClickActivity;
import me.jingbin.byrecyclerview.activity.ItemPayloadActivity;
import me.jingbin.byrecyclerview.activity.LoadMoreActivity;
import me.jingbin.byrecyclerview.activity.SecondTypeActivity;
import me.jingbin.byrecyclerview.activity.StateViewActivity;
import me.jingbin.byrecyclerview.activity.StickyItemActivity;
Expand All @@ -39,6 +40,7 @@ public class MainActivity extends AppCompatActivity {

private final List<String> list = Arrays.asList(
"下拉刷新、加载更多",
"自动加载更多、松手加载更多",
"Add HeaderView/FooterView",
"设置StateView",
"item 点击/长按",
Expand Down Expand Up @@ -78,37 +80,40 @@ public void onSingleClick(View v, int position) {
case 0:// 下拉刷新、加载更多
SecondTypeActivity.start(v.getContext(), "refreshLoadMore");
break;
case 1:// Add HeaderView/FooterView
case 1:// 自动加载更多、松手加载更多
startActivity(new Intent(MainActivity.this, LoadMoreActivity.class));
break;
case 2:// Add HeaderView/FooterView
startActivity(new Intent(MainActivity.this, HeaderFooterActivity.class));
break;
case 2:// 设置StateView
case 3:// 设置StateView
startActivity(new Intent(MainActivity.this, StateViewActivity.class));
break;
case 3:// item 点击/长按
case 4:// item 点击/长按
startActivity(new Intent(MainActivity.this, ItemClickActivity.class));
break;
case 4:// item 局部刷新
case 5:// item 局部刷新
startActivity(new Intent(MainActivity.this, ItemPayloadActivity.class));
break;
case 5:// adapter (多类型、databinding、ListView)
case 6:// adapter (多类型、databinding、ListView)
SecondTypeActivity.start(v.getContext(), "adapter");
break;
case 6:// 万能分割线
case 7:// 万能分割线
SecondTypeActivity.start(v.getContext(), "Divider");
break;
case 7:// item 悬浮置顶
case 8:// item 悬浮置顶
startActivity(new Intent(MainActivity.this, StickyItemActivity.class));
break;
case 8:// Skeleton 骨架图
case 9:// Skeleton 骨架图
SecondTypeActivity.start(v.getContext(), "Skeleton");
break;
case 9:// CoordinatorLayout + RecyclerView 使用示例
case 10:// CoordinatorLayout + RecyclerView 使用示例
startActivity(new Intent(MainActivity.this, AppBarLayoutActivity.class));
break;
case 10:// FlexboxLayoutManager
case 11:// FlexboxLayoutManager
startActivity(new Intent(MainActivity.this, FlexBoxActivity.class));
break;
case 11:// RecyclerView 嵌套滑动置顶
case 12:// RecyclerView 嵌套滑动置顶
startActivity(new Intent(MainActivity.this, StickyRvActivity.class));
break;
default:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package me.jingbin.byrecyclerview.activity;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import java.util.ArrayList;

import me.jingbin.byrecyclerview.R;
import me.jingbin.byrecyclerview.app.BaseActivity;
import me.jingbin.byrecyclerview.databinding.ActivityRefreshBinding;
import me.jingbin.byrecyclerview.fragment.RefreshFragment;
import me.jingbin.byrecyclerview.fragment.SwipeRefreshFragment;
import me.jingbin.byrecyclerview.view.MyFragmentPagerAdapter;

/**
* @author jingbin
*/
public class LoadMoreActivity extends BaseActivity<ActivityRefreshBinding> {

private ArrayList<String> mTitleList = new ArrayList<>(2);
private ArrayList<Fragment> mFragments = new ArrayList<>(2);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_refresh);
setTitle("自动加载更多、松手加载更多");

initView();
}

private void initView() {
initFragmentList();
MyFragmentPagerAdapter myAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), mFragments, mTitleList);
binding.viewPager.setAdapter(myAdapter);
binding.viewPager.setOffscreenPageLimit(1);
myAdapter.notifyDataSetChanged();
binding.tabLayout.setupWithViewPager(binding.viewPager);
}

private void initFragmentList() {
mTitleList.clear();
mTitleList.add("自动加载更多");
mTitleList.add("松手加载更多");
mFragments.add(RefreshFragment.newInstance("auto"));
mFragments.add(RefreshFragment.newInstance(""));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ protected void loadData() {
}

private void initAdapter() {
// 是否是自动加载更多
boolean isAutoLoadMore = "auto".equals(mType);

recyclerView = getView(R.id.recyclerView);
mAdapter = new DataAdapter(DataUtil.get(activity, 10));
LinearLayoutManager layoutManager = new LinearLayoutManager(activity);
Expand All @@ -83,13 +86,20 @@ private void initAdapter() {
// 加了分割线,滚动条才会置顶
recyclerView.addItemDecoration(new SpacesItemDecoration(recyclerView.getContext(), SpacesItemDecoration.VERTICAL, 1));
recyclerView.setAdapter(mAdapter);
recyclerView.setOnLoadMoreListener(new ByRecyclerView.OnLoadMoreListener() {
/**
* 设置自动加载更多一定要通过 【setOnLoadMoreListener】 方式设置!
* isAutoLoadMore: 是否自动加载更多,之后的打开/关闭加载更多还是使用 setLoadMoreEnabled()
* 2: 滑动到倒数第 2 条数据加载,默认1
*
* 也可以使用:setOnLoadMoreListener(boolean isAutoLoadMore, OnLoadMoreListener listener)
*/
recyclerView.setOnLoadMoreListener(isAutoLoadMore, 2, new ByRecyclerView.OnLoadMoreListener() {
@Override
public void onLoadMore() {
recyclerView.postDelayed(new Runnable() {
@Override
public void run() {
if (page == 3) {
if (page == 4) {
recyclerView.loadMoreEnd();
return;
}
Expand Down

0 comments on commit 010871f

Please sign in to comment.