您的位置:首页 > 理论基础 > 计算机网络

RecyclerView+OkHttp加载刷新

2016-11-23 19:46 253 查看
package com.bwie.test;

import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.widget.LinearLayout;

import com.google.gson.Gson;

import java.io.IOException;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class SecondActivity extends AppCompatActivity implements PullBaseView.OnHeaderRefreshListener,
PullBaseView.OnFooterRefreshListener{

private PullRecyclerView recyclerView;
List<Data> list;
private MyAdapter recyclerViewadapter;
String path="http://japi.juhe.cn/joke/content/list.from?key= 874ed931559ba07aade103eee279bb37 &page=2&pagesize=10&sort=asc&time=1418745237";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);

//数据
setDatas();
//找控件
recyclerView = (PullRecyclerView) findViewById(R.id.recyclerView);
recyclerView.setOnHeaderRefreshListener(this);//设置下拉监听
recyclerView.setOnFooterRefreshListener(this);//设置上拉监听
//设置布局管理
recyclerView.setLayoutManager(new LinearLayoutManager(SecondActivity.this));
recyclerView.setOrientation(LinearLayout.VERTICAL);

}

private void setDatas() {
//请求数据
//创建okhttp对象
OkHttpClient oc=new OkHttpClient();
//创建一个Reques
Request request=new Request.Builder().url(path).build();
//new call
Call call=oc.newCall(request);
call.enqueue(new Callback() {
//请求失败
@Override
public void onFailure(Call call, IOException e) {

}
//请求成功
@Override
public void onResponse(Call call, Response response) throws IOException {
final String res=response.body().string();
recyclerView.post(new Runnable() {
@Override
public void run() {
//Gson解析
Gson gson=new Gson();
final Bean bean=gson.fromJson(res,Bean.class);
list=bean.getResult().getData();
//                        recyclerView.setAdapter(new MyAdapter(SecondActivity.this,list));
recyclerViewadapter=new MyAdapter(SecondActivity.this,list);
recyclerView.setAdapter(recyclerViewadapter);
}
});
}
});
}

@Override
public void onFooterRefresh(PullBaseView view) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// mDatas.add("TEXT更多");
recyclerViewadapter.notifyDataSetChanged();
recyclerView.onFooterRefreshComplete();
}
}, 2000);
}

@Override
public void onHeaderRefresh(PullBaseView view) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//  mDatas.add(0, "TEXT新增");
recyclerViewadapter.notifyDataSetChanged();
recyclerView.onHeaderRefreshComplete();
}
}, 3000);
}
}

//适配器

package com.bwie.test;

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 java.util.List;

/**
* Created by lenovo-pc on 2016/11/21.
*/
public class MyAdapter extendsRecyclerView.Adapter<MyAdapter.MyViewHolder>{
private final LayoutInflater inflater;
Context context;
List<Data> list;

//有参构造
public MyAdapter(Context context, List<Data> list) {
this.context=context;
this.list=list;
inflater = LayoutInflater.from(context);
}

//初始化view
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.list_item, parent, false);
MyViewHolder holder = new MyViewHolder(view);

return holder;
}

//加载数据,绑定数据
@Override
public void onBindViewHolder(MyAdapter.MyViewHolder holder, int position) {
holder.unixtime.setText(list.get(position).getUnixtime());
holder.content.setText(list.get(position).getContent());
holder.updatetime.setText(list.get(position).getUpdatetime());
}

//获取数据总条数
@Override
public int getItemCount() {
return list.size();
}

//初始化子布局id
class MyViewHolder extends RecyclerView.ViewHolder
{
TextView unixtime;
TextView content;
TextView updatetime;

public MyViewHolder(View view)
{
super(view);
unixtime = (TextView) view.findViewById(R.id.unixtime);
content = (TextView) view.findViewById(R.id.content);
updatetime = (TextView) view.findViewById(R.id.updatetime);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息