1.添加加依赖:
compile ‘com.wuxiaolong.pullloadmorerecyclerview:library:1.0.4’
2.写出布局控件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.wuxiaolong.pullloadmorerecyclerview.PullLoadMoreRecyclerView
android:id="@+id/pullLoadMoreRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp" />
<Button
android:id="@+id/but"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="回到顶部"
android:layout_alignBottom="@+id/pullLoadMoreRecyclerView"
android:layout_alignRight="@+id/pullLoadMoreRecyclerView"
android:layout_alignEnd="@+id/pullLoadMoreRecyclerView" />
</RelativeLayout>
3.给自定义的控件添加适配器
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bwie.text.R;
import java.util.List;
/**
* Created by Love_you on 2017/9/19 0019.
*/
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
private Context context;
private List<String> list;
public RecyclerViewAdapter(Context context, List<String> list) {
this.context = context;
this.list = list;
}
//加载视图
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycleview_item, null);
ViewHolder viewHolder=new ViewHolder(view);
return viewHolder;
}
//绑定数据
@Override
public void onBindViewHolder(RecyclerViewAdapter.ViewHolder holder, int position) {
holder.textView.setText(list.get(position));
}
//数据的条目
@Override
public int getItemCount() {
return list.size();
}
//获取布局控件
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.textview);
}
}
}
4.在Activity中获取控件并添加适配器的样式和刷新样式
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.bwie.text.R;
import com.bwie.text.adapter.RecyclerViewAdapter;
import com.wuxiaolong.pullloadmorerecyclerview.PullLoadMoreRecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements PullLoadMoreRecyclerView.PullLoadMoreListener {
private PullLoadMoreRecyclerView pullLoadMoreRecyclerView;
private List<String> list=new ArrayList<>();
private RecyclerViewAdapter recyclerViewAdapter;
private int con=20;
private Button but;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pullLoadMoreRecyclerView = (PullLoadMoreRecyclerView) findViewById(R.id.pullLoadMoreRecyclerView);
but = (Button) findViewById(R.id.but);
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pullLoadMoreRecyclerView.scrollToTop();
}
});
//设置网格列数
pullLoadMoreRecyclerView.setGridLayout(1);
//设置上拉加载展示的字
pullLoadMoreRecyclerView.setFooterViewText("loading");
//设置瀑布流的列数
//pullLoadMoreRecyclerView.setStaggeredGridLayout(2);
getData();
recyclerViewAdapter = new RecyclerViewAdapter(MainActivity.this,list);
//给布局添加适配器
pullLoadMoreRecyclerView.setAdapter(recyclerViewAdapter);
//添加点击事件
pullLoadMoreRecyclerView.setOnPullLoadMoreListener(this);
}
private void getData1() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//停止刷新
pullLoadMoreRecyclerView.setPullLoadMoreCompleted();
}
}, 1000);
}
private void getData() {
for (int i = 0; i < con; i++) {
list.add("条目"+i);
}
}
//刷新
@Override
public void onRefresh() {
list.clear();
getData();
recyclerViewAdapter.notifyDataSetChanged();
getData1();
Toast.makeText(MainActivity.this, "刷新成功", Toast.LENGTH_SHORT).show();
}
//加载
@Override
public void onLoadMore() {
list.clear();
con=con+10;
getData();
recyclerViewAdapter.notifyDataSetChanged();
getData1();
Toast.makeText(MainActivity.this, "加载成功", Toast.LENGTH_SHORT).show();
}
}
在此这个自定义控件中必须设置刷新和加载的方法否则会出现到顶部和底部处出现卡定状态不能继续滑动的Bug
这些是设置线性自定义控件的方法
设置线性布局
pullLoadMoreRecyclerView = (PullLoadMoreRecyclerView) view.findViewById(R.id.pullLoadMoreRecyclerView);
pullLoadMoreRecyclerView.setLinearLayout();
刷新结束
pullLoadMoreRecyclerView .setPullLoadMoreCompleted();
不需要下拉刷新
pullLoadMoreRecyclerView .setPullRefreshEnable(false);
不需要上拉刷新
pullLoadMoreRecyclerView .setPushRefreshEnable(false);
设置上拉刷新文字
pullLoadMoreRecyclerView.setFooterViewText(“loading”);
设置下拉刷新颜色
pullLoadMoreRecyclerView.setColorSchemeResources(android.R.color.holo_red_dark,android.R.color.holo_blue_dark);
快速Top
pullLoadMoreRecyclerView.scrollToTop();
在Activity中我们可以给布局添加布局优化
例:
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if(view==null){
view = inflater.inflate(R.layout.fragment01,null);
}
ViewGroup group= (ViewGroup) view.getParent();
if(group!=null){
group.removeView(view);
}
pullLoadMoreRecyclerView = (PullLoadMoreRecyclerView) view.findViewById(R.id.pullLoadMoreRecyclerView);
pullLoadMoreRecyclerView.setOnPullLoadMoreListener(this);
return view;
}
解析json时候原生解析刷新加载处理
if(count==1){
jsonArray1 = new JSONArray();
}
for (int i = 0; i < jsonArray.length(); i++) {
jsonArray1.put(jsonArray.get(i));
}