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);
}
}
}
相关文章推荐
- MVP模式的OKhttp请求网络数据,xrecyclerview上拉刷新,下拉加载
- 实战MVP请求数据OKHttp封装RecyclerView上拉刷新下拉加载
- OkHttp请求_springview_recyclerview上拉刷新下拉加载
- 安卓选择器类库AndroidPicker、定时器类库CountdownView、上拉刷新加载更多的EasyRecyclerView
- SwipeRefreshLoadLayout + RecyclerView 实现下列刷新,上拉加载
- RecyclerView Glide加载图片刷新时会闪一下
- Toolbar+DrawerLayout+recyclerVIew上下刷新加载问题记录
- RecyclerView使用、上拉加载、局部刷新、多种布局、点击事件和坑
- XRecyclerView实现RecyclerView下拉刷新上来加载 自己做了部分修改,使代码更简洁易用
- 刷新加载RecyclerView+图片加载Glide+多样式布局(二)
- RecyclerView下拉刷新上拉加载更多--EasyRecyclerView
- PullRecyclerView上拉刷新下拉加载点击事件
- RecyclerView实现上拉刷新,下拉加载,item点击事件
- RecyclerView刷新与加载更多
- Android RecyclerView (四)总结(一)-(三)并且实现下拉刷新数据,上拉加载数据功能
- 解决RecyclerView中使用UIL加载网络图片,在刷新时出现闪烁问题
- 可以下拉刷新,上拉加载更多的RecyclerView
- RecyclerView使用详解一代替ListView(点击事件,添加头布局,上拉刷新下拉加载)
- RecyclerView的上拉刷新与下拉加载
- Android之 RecyclerView,CardView 详解和相对应的上拉刷新下拉加载