diff --git a/app/build.gradle b/app/build.gradle index a0c1c27..16736a8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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 } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aa2a2ad..d917c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,6 +45,7 @@ + \ No newline at end of file diff --git a/app/src/main/java/me/jingbin/byrecyclerview/MainActivity.java b/app/src/main/java/me/jingbin/byrecyclerview/MainActivity.java index 7fb4387..e3b273a 100644 --- a/app/src/main/java/me/jingbin/byrecyclerview/MainActivity.java +++ b/app/src/main/java/me/jingbin/byrecyclerview/MainActivity.java @@ -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; @@ -39,6 +40,7 @@ public class MainActivity extends AppCompatActivity { private final List list = Arrays.asList( "下拉刷新、加载更多", + "自动加载更多、松手加载更多", "Add HeaderView/FooterView", "设置StateView", "item 点击/长按", @@ -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: diff --git a/app/src/main/java/me/jingbin/byrecyclerview/activity/LoadMoreActivity.java b/app/src/main/java/me/jingbin/byrecyclerview/activity/LoadMoreActivity.java new file mode 100644 index 0000000..57a913b --- /dev/null +++ b/app/src/main/java/me/jingbin/byrecyclerview/activity/LoadMoreActivity.java @@ -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 { + + private ArrayList mTitleList = new ArrayList<>(2); + private ArrayList 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("")); + } + +} diff --git a/app/src/main/java/me/jingbin/byrecyclerview/fragment/RefreshFragment.java b/app/src/main/java/me/jingbin/byrecyclerview/fragment/RefreshFragment.java index 13362c4..f24dfec 100644 --- a/app/src/main/java/me/jingbin/byrecyclerview/fragment/RefreshFragment.java +++ b/app/src/main/java/me/jingbin/byrecyclerview/fragment/RefreshFragment.java @@ -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); @@ -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; }