XRecyclerView 依赖:
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
首先需要在主布局xml中写XRcyclerView的控件
<com.jcodecraeer.xrecyclerview.XRecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/rey" ></com.jcodecraeer.xrecyclerview.XRecyclerView>
这篇博客主要就是写关于XRcyclerView 的上拉加载和下拉刷新 的主要代码 所以不会把所有类都写出来 , 还加了一个拦截器:
package bawe.com.day_11_11_lianxi;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.ArrayList;
import java.util.List;
import bawe.com.day_11_11_lianxi.adpader.RecyclerViewAdpader;
import bawe.com.day_11_11_lianxi.bean.Song_list;
import bawe.com.day_11_11_lianxi.presaenter.Presaenter;
public class MainActivity extends AppCompatActivity implements IView{
private XRecyclerView rey;
private List<Song_list> list=new ArrayList<Song_list>();
private RecyclerViewAdpader recyclerViewAdpader;
private Presaenter presaenter;
private int a=1;
//定义一个boolean 值
private boolean isFand=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//查找控件
rey = (XRecyclerView)findViewById(R.id.rey);
recyclerViewAdpader = new RecyclerViewAdpader(this, list);
//设置线性条条目布局
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
rey.setLayoutManager(linearLayoutManager);
//设置适配器
rey.setAdapter(recyclerViewAdpader);
//调用接口点击事件
recyclerViewAdpader.setOnRecyclerViewItemClickListener(new RecyclerViewAdpader.OnRecyclerViewItemClickListener() {
@Override
public void OnItemClick(int position) {
//删除集合中的数据
list.remove(position);
//点击删除
recyclerViewAdpader.notifyItemRemoved(position);
//刷新
recyclerViewAdpader.notifyDataSetChanged();
}
});
//上拉加载和下拉刷新
rey.setLoadingListener(new XRecyclerView.LoadingListener() {
//刷新
@Override
public void onRefresh() {
isFand=true;
a++;
diaoyong();
}
//加载
@Override
public void onLoadMore() {
isFand=false;
a++;
diaoyong();
}
});
presaenter = new Presaenter();
presaenter.attachView(this);
presaenter.doget(a);
diaoyong();
}
private void diaoyong() {
presaenter.doget(a);
}
@Override
public void Success(List<Song_list> news) {
//如果是true就是刷新 否则就是加载
if (isFand){
//停止刷新
rey.refreshComplete();
}else{
//停止加载
rey.loadMoreComplete();
}
if (null!=news){
//如果是刷新就清空list集合中的数据
if(isFand){
list.clear();
}
list.addAll(news);
//刷新适配器
recyclerViewAdpader.notifyDataSetChanged();
}
}
@Override
public void Failed(Exception e) {
}
}
给控件图片赋值:
//给图片赋值 Glide.with(context).load(list.get(position).getPic_s500()).into(holder.img);
拦截器: