Android开发之RecyclerView的上拉刷新和下拉加载
自2015年谷歌开发者大会的召开后,给我们推出了一个新的控件即RecyclerView,它将逐步取代ListView和GriView,对于一些资讯类新闻类的App而言,下拉刷新上拉加载都是不可缺少的功能,那么RecyclerView如何实现上拉刷新和下拉加载呢,经过本人一段时间的研究,终于实现了,下面将代码贴出,还望诸位大神批评指正,灰常感谢♪(^∇^*)
特别注意:
由于本人的Demo中集成了DATABINDINGLIBRARY,即数据绑定库,故使用AS开发的话,需要配置这两步:
1.在项目的build.gradle(非module)中的dependencies下添加配置
classpath "com.android.databinding:dataBinder:1.0-rc1"
2.在module的build.gradle中的添加配置
apply plugin: 'com.android.databinding'
效果图如下:
核心代码如下:
MainActivity
package com.hxht.testrecyclerviewloadmore; import android.databinding.DataBindingUtil; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Toast; import com.hxht.testrecyclerviewloadmore.adapter.MyRecyclerViewAdapter; import com.hxht.testrecyclerviewloadmore.callback.OnRcvScrollListener; import com.hxht.testrecyclerviewloadmore.databinding.ActivityMainBinding; import com.hxht.testrecyclerviewloadmore.domain.HelpClass; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ActivityMainBinding binding; private List<String> list; private int index = 1; private int page = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); initData(); } private void initView() { binding = DataBindingUtil.setContentView(this, R.layout.activity_main); } private void initData() { HelpClass helpClass = new HelpClass("正在加载、、、"); binding.setHelpclass(helpClass); list = new ArrayList<>(); list.clear(); for (int i = 1; i < 201; i++) { list.add("测试" + (i < 10 ? "0" + i : i)); } final MyRecyclerViewAdapter adapter = new MyRecyclerViewAdapter(MainActivity.this, list); RecyclerView.LayoutManager manager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false); binding.recycleview.setAdapter(adapter); binding.recycleview.setLayoutManager(manager); binding.recycleview.addItemDecoration(new DividerItemDecoration(MainActivity.this, DividerItemDecoration.VERTICAL_LIST)); int[] colos = <