//view层
public interface HttpView {
void onSuccess(String result);
void onFailer(String msg);
void onGetData(List<HttpUser.DataBean> data);
}
//model层
public class HttpModel {
public void jie(String path, final UrlConnection.HttpCallBack callBack){
UrlConnection urlConnection = new UrlConnection();
urlConnection.jie(path, new UrlConnection.HttpCallBack() {
@Override
public void getData(String s) {
Gson gson = new Gson();
HttpUser user = gson.fromJson(s, HttpUser.class);
List<HttpUser.DataBean> data = user.getData();
callBack.setData(data);
}
@Override
public void setData(List<HttpUser.DataBean> data) {
}
});
}
}
//presenter层
public class HttpPresenter {
private HttpView mHttpView;
private HttpModel mHttpModel;
private List<HttpUser.DataBean> mdata;
public HttpPresenter(HttpView httpView) {
mHttpView = httpView;
mHttpModel = new HttpModel();
}
public void jie(String path){
mHttpModel.jie(path, new UrlConnection.HttpCallBack() {
@Override
public void getData(String s) {
if(s.equals("成功的返回")){
mHttpView.onSuccess("成功的返回");
}else {
mHttpView.onFailer("返回失败");
}
}
@Override
public void setData(List<HttpUser.DataBean> data) {
mdata = data;
mHttpView.onGetData(mdata);
}
});
}
}
//接口类
public interface OkHttpUtil {
public String GONG = “http://www.xieast.com/api/news/news.php?page=1”;
}
//获取网络
public class UrlConnection {
public UrlConnection jie(String path, final HttpCallBack callBack){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.get()
.url(path)
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
int code = response.code();
if(code==200){
ResponseBody body = response.body();
String string = body.string();
callBack.getData(string);
}
}
});
return this;
}
public interface HttpCallBack{
void getData(String s);
void setData(List<HttpUser.DataBean> data);
}
}
//适配器
public class HttpAdapter extends RecyclerView.Adapter<HttpAdapter.MyViewHolder> {
private Context mContext;
private List<HttpUser.DataBean> list;
private DisplayImageOptions options;
private RecycleitemClick click;
public void setClick(RecycleitemClick click) {
this.click = click;
}
public HttpAdapter(Context context, List<HttpUser.DataBean> list) {
mContext = context;
this.list = list;
options = new DisplayImageOptions.Builder()
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
}
public interface RecycleitemClick{
void onItemClick(View view,int position);
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item, viewGroup, false);
MyViewHolder holder = new MyViewHolder(view,click);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
HttpUser.DataBean bean = list.get(i);
ImageLoader.getInstance().displayImage(""+bean.getThumbnail_pic_s(),myViewHolder.image,options);
myViewHolder.text.setText(""+bean.getAuthor_name()+"/n"+bean.getTitle());
}
@Override
public int getItemCount() {
return list==null?0:list.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView text;
ImageView image;
public MyViewHolder(@NonNull View itemView, final RecycleitemClick click) {
super(itemView);
text = itemView.findViewById(R.id.textView);
image = itemView.findViewById(R.id.imageView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
click.onItemClick(v,getAdapterPosition());
}
});
}
}
}
//ImageLoader
public class MyImageLoader extends Application {
@Override
public void onCreate() {
super.onCreate();
initData();
}
private void initData() {
ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this)
.build();
ImageLoader.getInstance().init(build);
}
}
//主界面
public class MainActivity extends AppCompatActivity implements HttpView {
private RecyclerView recycle;
private List<HttpUser.DataBean> list = new ArrayList<>();
private HttpPresenter mPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recycle = findViewById(R.id.recycle);
mPresenter = new HttpPresenter(this);
mPresenter.jie(OkHttpUtil.GONG);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recycle.setLayoutManager(linearLayoutManager);
}
@Override
public void onSuccess(String result) {
Toast.makeText(this,result,Toast.LENGTH_SHORT).show();
}
@Override
public void onFailer(String msg) {
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}
@Override
public void onGetData(final List<HttpUser.DataBean> data) {
runOnUiThread(new Runnable() {
@Override
public void run() {
HttpAdapter adapter = new HttpAdapter(getApplicationContext(),data);
adapter.setClick(new HttpAdapter.RecycleitemClick() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(MainActivity.this,"第"+position+"条数据",Toast.LENGTH_SHORT).show();
}
});
recycle.setAdapter(adapter);
}
});
}
}