package com.lbs.mvpchaunshuju.api; /** * author:Created by WangZhiQiang on 2018/3/1. */ public class Api { public static String URL ="http://gank.io/api/data/"; }
///Bean
///此处省略
http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1
的jsonBean
//M层 moudle
package com.lbs.mvpchaunshuju.moudles;import android.os.Handler;import android.os.Message;import com.google.gson.Gson;import com.lbs.mvpchaunshuju.api.Api;import com.lbs.mvpchaunshuju.bean.Bean;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * author:Created by WangZhiQiang on 2018/3/1. */public class LoginMoudle { private CallBackData callBackData ; public interface CallBackData{ void backData(Bean bean); } public void setOnCallBackData(CallBackData callBackData) { this.callBackData = callBackData; } private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0: Bean bean = (Bean) msg.obj; if (callBackData != null){ callBackData.backData(bean); } break; } } }; public void getServerData(int page) { OkHttpClient okHttpClient = new OkHttpClient(); Request build = new Request.Builder().url(Api.URL + "%E7%A6%8F%E5%88%A9/10/" + page).build(); Call call = okHttpClient.newCall(build); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Gson gson = new Gson(); Bean bean = gson.fromJson(string, Bean.class); Message msg = new Message(); msg.what = 0; msg.obj = bean; handler.sendMessage(msg); } }); }}
p层 loginpesenters
package com.lbs.mvpchaunshuju.pesenters;import com.lbs.mvpchaunshuju.bean.Bean;import com.lbs.mvpchaunshuju.moudles.LoginMoudle;import com.lbs.mvpchaunshuju.view.OnView;/** * author:Created by WangZhiQiang on 2018/3/1. */public class LoginPesenters { private LoginMoudle loginMoudle; private OnView onView; public LoginPesenters(OnView onView) { this.onView = onView; loginMoudle = new LoginMoudle(); } public void relevance(int page){ loginMoudle.getServerData(page); loginMoudle.setOnCallBackData(new LoginMoudle.CallBackData() { @Override public void backData(Bean bean) { onView.onData(bean); } }); }}
V层 onView
package com.lbs.mvpchaunshuju.view;import com.lbs.mvpchaunshuju.bean.Bean;/** * author:Created by WangZhiQiang on 2018/3/1. */public interface OnView { void onData(Bean bean);}
/适配器
package com.lbs.mvpchaunshuju;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.ImageView;import android.widget.TextView;import com.lbs.mvpchaunshuju.bean.Bean;import com.squareup.picasso.Picasso;import java.util.List;/** * author:Created by WangZhiQiang on 2018/3/1. */public class LoginAdapter extends RecyclerView.Adapter<LoginAdapter.MyViewHolder> { Context context; List<Bean.ResultsBean> list; public LoginAdapter(Context context, List<Bean.ResultsBean> list) { this.context = context; this.list = list; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false); MyViewHolder holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { Bean.ResultsBean resultsBean = list.get(position);// holder.tv_title.setText(resultsBean.getSource());// Picasso.with(context).load(resultsBean.getUrl()).placeholder(R.mipmap.ic_launcher).into(holder.iv); String source = resultsBean.getSource(); String url = resultsBean.getUrl(); holder.tv_title.setText(source); //placeholder先加载占位图,避免图片错位 Picasso.with(context).load(url).placeholder(R.mipmap.ic_launcher).into(holder.iv); } @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ private final TextView tv_title; private final ImageView iv; public MyViewHolder(View view) { super(view); tv_title = view.findViewById(R.id.tv_title); iv = view.findViewById(R.id.iv); } }}