Okhttp和网络数据
来源:互联网 发布:js select 选中值 编辑:程序博客网 时间:2024/05/16 14:10
MainActivity类 import android.support.v4.view.accessibility.AccessibilityManagerCompat;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.util.Log;import android.widget.LinearLayout;import android.widget.ListAdapter;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements CallBackListener<ResponseBean> { private RecyclerView recycler; private SwipeRefreshLayout swipe; List<ResponseBean.美女Bean> listData = new ArrayList<>(); private StaggeredGridLayoutManager staggeredGridLayoutManager; private MyRecyclerViewAdapter adapter; private LinearLayoutManager linearLayoutManager; private int page; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); loadMore(); } private void loadMore() { swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { listData.clear(); page++; initData(page); adapter.notifyDataSetChanged(); swipe.setRefreshing(false); } }); recycler.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (RecyclerView.SCROLL_STATE_IDLE == newState) { int lastVisibleItemPosition = linearLayoutManager.findLastVisibleItemPosition(); if (lastVisibleItemPosition == listData.size() - 1) { page++; initData(page); adapter.notifyDataSetChanged(); } } } }); } private void initData(String page) { NetUtils netUtils = new NetUtils(this); netUtils.getNetWorkData(page); } private void initView() { recycler = (RecyclerView) findViewById(R.id.recycelr); swipe = (SwipeRefreshLayout) findViewById(R.id.swipe); staggeredGridLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); linearLayoutManager = new LinearLayoutManager(this); recycler.setLayoutManager(linearLayoutManager); } @Override public void callBackData(final ResponseBean responseBean) { if (responseBean != null) { listData.addAll(responseBean.person); Log.e("TAG","下拉"+listData.size()+""); runOnUiThread(new Runnable() { @Override public void run() { if (adapter == null) { adapter = new MyRecyclerViewAdapter(MainActivity.this, listData); recycler.setAdapter(adapter); } else { adapter.notifyDataSetChanged(); } } }); } }} 接口
public interface CallBackListener<T> {
void callBackData(T t);
}
public class Constance {
public static final String URL=?
}
适配器
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import java.util.List;
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder> {
private Context context;
private List<ResponseBean.美女Bean> list;
public MyRecyclerViewAdapter(Context context, List<ResponseBean.美女Bean> listData) {
this.context = context;
this.list=listData;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = parent.inflate(context, R.layout.recycler_item, null);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
//Log.e("TAG",list.size()+"总数据");
Glide.with(context).load(list.get(position).imgsrc).into(holder.recycler_item_image);
}
@Override
public int getItemCount() {
return list != null ? list.size() : 0;
}
static class MyViewHolder extends RecyclerView.ViewHolder {
ImageView recycler_item_image;
public MyViewHolder(View itemView) {
super(itemView);
recycler_item_image = itemView.findViewById(R.id.recycler_item_image);
}
}
}
public class NetUtils {
private static CallBackListener callBackListener;
public NetUtils(CallBackListener callBackListener) {
this.callBackListener = callBackListener;
}
public void getNetWorkData(String url) {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(Constance.URL+url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callBackListener.callBackData(null);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful() && response != null) {
String data = response.body().string();
Logger.d("TAG",data);
ResponseBean responseBean = ResponseBean.objectFromData(data);
callBackListener.callBackData(responseBean);
}
}
});
}
}
阅读全文
0 0
- Okhttp和网络数据
- OKHttp请求网络数据
- OKhttp网络缓存数据
- OkHttp网络数据请求
- OkHttp获取网络数据
- OkHttp获取网络数据
- okhttp网络请求数据
- HttpURLConnection和okHttp两种获取网络数据实现
- RecyclerView和okhttp结合 实现一个网络请求数据
- RecyclerView+OkHttp展示网络数据
- MVP+OKHttp获取网络数据
- OkHttp数据请求和OkHttp拦截器
- HttpUrlConnection 和 okhttp 请求数据
- OkHttp网络请求数据的封装
- OkHttp请求网络数据,并listview展示
- RXjava加okhttp 请求请求网络数据
- MVP-简单的OkHttp网络请求数据
- Retrofit+okhttp拦截器获取网络数据
- 概率与数理统计学习总结三--条件概率、全概率、贝叶斯、离散型随机变量
- activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含
- CSS初级课程
- 新手学java必备的基础知识一(与c++相比)
- android四大组件之Activity(一)
- Okhttp和网络数据
- Problem_FZU 2150 Fire Game BFS 两点
- hadoop2.x入门:在windows上用Eclipse编写程序
- 腾讯研发总监王辉:十亿级视频播放技术优化揭秘
- 记Dorado7学习(3)
- 【 hdoj 4240】 Route Redundancy 【dinic+spfa】
- 游戏运维的最佳实践:搜狐畅游自动化运维之旅!
- java Collections.sort()实现List排序的默认方法和自定义方法
- Duilib支持自绘tooltip