1 概述
最近在做项目的时候,需要实现列表的下拉刷新和上拉加载更多的功能,由于项目周期问题,下拉刷新就直接使用了系统提供的SwipeRefreshLayout类,但是SwipeRefreshLayout的实现效果真的是太low了而且无法达到视觉工程师的要求;上拉加载更多则通过在列表的最后添加一个提示上拉加载的item来实现,虽然实现效果达到了视觉工程师的要求但是会使列表的实现变得复杂。最近又被一个同学问起上面的功能有没有简单的实现方式,趁着现在闲暇就通过自定义View(RefreshLayout)实现了上面的功能。
2 RefreshLayout的使用
首先看一下实现效果:
图1
下图是对上图中的下拉刷新和上拉加载更多的流程的概括:
图2
上图中的列表是通过RecyclerView实现的,实现该列表的下拉刷新和上拉加载更多的功能是通过在RecyclerView之上嵌套我自定义的RefreshLayout实现的,使用RefreshLayout的代码如下:
布局activity_l:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:id="@+id/refreshlayout_test"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/recyclerview_test_refresh"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
public class TestRefreshActivity extends AppCompatActivity implements RefreshLayout.OnRefreshStatusListener {
private RefreshLayout testRefreshLayout;
private RecyclerView testRefreshRV;
private MyAdapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
setContentView(R.layout.activity_test_refresh);
testRefreshLayout = (RefreshLayout) findViewById(freshlayout_test);
testRefreshLayout.setPullDownPromptLayout(new SamplePullDownPromptLayout(this));
testRefreshLayout.setPullUpPromptLayout(new SamplePullUpPromptLayout(this));
testRefreshLayout.setSupportPullUp(true);
testRefreshLayout.setOnRefreshStatusListener(this);
testRefreshRV = (RecyclerView) findViewById(lerview_test_refresh);
testRefreshRV.setLayoutManager(new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, false));
adapter = new MyAdapter();
testRefreshRV.setAdapter(adapter);
}
@Override
public void onPullDownRefresh() {
testRefreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
} }, 2000); } @Override public void onPullUpRefresh() { testRefreshLayout.postDelayed(new Runnable() { @Ov
本文发布于:2024-01-31 19:01:25,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170669888730675.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |