您的位置:首页 > 其它

recyclerview上拉刷新下拉加载

2017-10-22 18:24 288 查看
转载请标明出处:http://blog.csdn.net/guodebiaoa/article/details/78191551

RecyclerView 没有为我们提供刷新加载功能,这时我们只能自己封装或者去网上找 

一些依赖来帮助我们去实现效果,这里为大家提供了用依赖来实现的发。

首先需要添加依赖:
compile 'com.wuxiaolong.pullloadmorerecyclerview:library:1.0.4'
1

添加完依赖之后可以看一下控件
<com.wuxiaolong.pullloadmorerecyclerview.PullLoadMoreRecyclerView
android:id="@+id/pullloadmorerecyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/topBar"
>
</com.wuxiaolong.pullloadmorerecyclerview.PullLoadMoreRecyclerView>
1
2
3
4
5
6
7

这个控件是对RecyclerView的一个封装其中包含着上拉加载下拉刷新功能

可以看一下API的一些调用,在这里我是在Fragment中做的
public class Fragment_A extends Fragment {
private int pager=1;
private View view;
private ViewGroup parent;
private MRecyclerViewAdapter adapter;
private Handler handler=new Handler(){

private ArrayList<DataBeans.DataBean> dataBeen;
private DataBeans dataBeans;

@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==0){
String json= (String) msg.obj;
Gson gson=new Gson();
dataBeans = gson.fromJson(json, DataBeans.class);

if(pager==1){
dataBeen = new ArrayList<>();
}
/**
*  通过jsonBean中的集合,循环放入新的集合
*/

for (int i=0;i<dataBeans.getData().size();i++){
dataBeen.add(dataBeans.getData().get(i));
}
getInfo(dataBeen);
recyclerview.setLinearLayout();
recyclerview.setPullRefreshEnable(true);
recyclerview.setPushRefreshEnable(true);
recyclerview.setOnPullLoadMoreListener(new PullLoadMoreRecyclerView.PullLoadMoreListener() {

private ArrayList&l
4000
t;DataBeans> list;

@Override
public void onRefresh() {
//刷新
handler.postDelayed(new Runnable() {
@Override
public void run() {
recyclerview.setPullLoadMoreCompleted();
Toast.makeText(getActivity(), "刷新成功", Toast.LENGTH_SHORT).show();
}
},2000);
}

@Override
public void onLoadMore() {
//加载
pager++;
getData();
handler.postDelayed(new Runnable() {
@Override
public void run() {
recyclerview.setPullLoadMoreCompleted();
Toast.makeText(getActivity(), "加载成功", Toast.LENGTH_SHORT).show();
}
},2000);

}
});
}
}
};
private PullLoadMoreRecyclerView recyclerview;
private boolean net;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if(view==null){
view = View.inflate(getActivity(), R.layout.fragment_a,null);
}
parent = (ViewGroup) view.getParent();
if(parent!=null){
parent.removeView(view);
}

return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getid();
net = NetInfo.netinfo(getActivity());
if(net==false){
Toast.makeText(getActivity(), "请检查网络是否连接", Toast.LENGTH_SHORT).show();
return;
}else{
getData();
}
//随便保存一些数据放入sd卡
try {
String fileName = "来呀! ";
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/我刚刚创建/";
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
}
FileOutputStream fos = new FileOutputStream(path + fileName);
fos.write("lao shi luan ma".getBytes());
fos.close();
}
}catch (Exception e){
e.printStackTrace();
}

}

/**
* 将handler置空防止内存泄漏,OOM
*/
@Override
public void onDestroy() {
super.onDestroy();
handler.removeCallbacksAndMessages(null);
}

public void getid() {
recyclerview = (PullLoadMoreRecyclerView) view.findViewById(R.id.pullloadmorerecyclerview);
}

public void getData(){
String url="http://www.yulin520.com/a2a/forum/allTypeList?sign=376C5BFC22179A1B8FF3A86D4588B29F&pageSize=10&ts=1877785007&forumType=0&page="+pager;
OkHttp3Utils.doGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {

}

@Override
public void onResponse(Call call, Response response) throws IOException {
String json= response.body().string();
Log.e("json",json.toString());
Message message=new Message();
message.what=0;
message.obj=json;
handler.sendMessage(message);
}
});
}

public void getInfo(List<DataBeans.DataBean> list){
if(adapter==null){
adapter = new MRecyclerViewAdapter(getActivity(),list);
recyclerview.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();
}

}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158

适配器
public class MRecyclerViewAdapter extends RecyclerView.Adapter<MRecyclerViewAdapter.ViewHolder>{

private Context context;
private List<DataBeans.DataBean> list;

public MRecyclerViewAdapter(Context context, List<DataBeans.DataBean> list) {
this.context = context;
this.list = list;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.recycleritem,null);
ObjectAnimator anim = ObjectAnimator.ofFloat(view,"rotationX", 0f, 360f);
// 动画的持续时间,执行多久?
anim.setDuration(1000);
anim.start();
ViewHolder viewHolder=new ViewHolder(view);
return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {

Picasso.with(context).load(list.get(position).getHeadImg()).resize(200,230).into(holder.ImageView);
holder.title.setText(list.get(position).getTitle());

}

@Override
public int getItemCount() {
return list.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{

private TextView title;
private  ImageView ImageView;
//找控件
public ViewHolder(View itemView) {
super(itemView);
ImageView = (ImageView) itemView.findViewById(R.id.item_image);
title = (TextView) itemView.findViewById(R.id.item_title);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

判断网络是否连接
public class NetInfo {
private static NetworkInfo networkInfo;

public static boolean netinfo(Context context){

ConnectivityManager connect= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
networkInfo = connect.getActiveNetworkInfo();
if(networkInfo!=null){
return true;
}
return false;
};
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

这里我没有为RecyclerView添加分割线如果大家想要添加一些分割线的话可以看一下我的博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: