//–依赖 implementation ‘com.android.support:recyclerview-v7:28.0.0’
package com.bawei.mvplx;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.bawei.mvplx.adapter.MyAdapter;
import com.bawei.mvplx.presenter.ShowPresenter;
import com.bawei.mvplx.view.ShowView;
import org.json.JSONArray;
public class ShowActivity extends AppCompatActivity implements ShowView {
private RecyclerView rlv;
private ShowPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
//找控件
rlv = findViewById(R.id.recycle);
//创建布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
//设置布局管理器
rlv.setLayoutManager(linearLayoutManager);
presenter = new ShowPresenter(this);
//p关联m
presenter.related();
}
//从view获取数据
@Override
public void show(JSONArray result) {
//把数据传给适配器
MyAdapter myAdapter = new MyAdapter(this,result);
rlv.setAdapter(myAdapter);
}
}
//--------------------------presenter--------------------
package com.bawei.mvplx.presenter;
import com.bawei.mvplx.model.ShowModel;
import com.bawei.mvplx.view.ShowView;
import org.json.JSONArray;
/**
-
Created by 叶至成 on 2019/2/16.
*/
public class ShowPresenter {private final ShowModel showModel;
private final ShowView showView;public ShowPresenter(ShowView view) {
showModel = new ShowModel();
showView = view;
}//p关联m
public void related() {
showModel.getGoogs();
showModel.setOnLisenter(new ShowModel.OnShowLisenter() {
@Override
public void onShow(JSONArray result) {
showView.show(result);
}
});
}
}
///-----------------------model包----------
package com.bawei.mvplx.model;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import com.bawei.mvplx.utils.OkHttpUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
-
Created by 叶至成 on 2019/2/16.
*/
public class ShowModel {
String url = “http://172.17.8.100/small/commodity/v1/bannerShow”;
//创建接口
public interface OnShowLisenter{
void onShow(JSONArray result);
}
//声明接口
public OnShowLisenter lisenter;
//监听方法
public void setOnLisenter(OnShowLisenter lisenter) {
this.lisenter = lisenter;
}private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
String json = (String) msg.obj;
try {
JSONObject jsonObject = new JSONObject(json);
JSONArray result = jsonObject.getJSONArray(“result”);
if (lisenter!=null){
lisenter.onShow(result);
}
} catch (Exception e) {
e.printStackTrace();
}break; } }
};
//获取网络数据
public void getGoogs() {
OkHttpUtils.getInstance().doGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {} @Override public void onResponse(Call call, Response response) throws IOException { String json = response.body().string(); Log.i("kkk", "onResponse: " + json); Message message = new Message(); message.what = 0; message.obj = json; handler.sendMessage(message); } });
}
}
///----------view包-------
package com.bawei.mvplx.view;
import org.json.JSONArray;
/**
- Created by 叶至成 on 2019/2/16.
*/
public interface ShowView {
void show(JSONArray result);
}
//----------------------工具类-------------------
package com.bawei.mvplx.utils;
import android.util.Log;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.logging.HttpLoggingInterceptor;
/**
-
Created by 叶至成 on 2019/2/16.
*/
public class OkHttpUtils {
private static OkHttpUtils okHttpUtils = null;private OkHttpUtils() {
}
public static OkHttpUtils getInstance() {
if (okHttpUtils == null){
//同步锁
synchronized (OkHttpUtils.class){
if (okHttpUtils==null){
okHttpUtils = new OkHttpUtils();
}
}
}
return okHttpUtils;
}
//创建OkHttp
public static void doGet(String url, Callback callback){
//创建日志拦截器
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
Log.i(“kkk”, "log: "+message);
}
});
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.build();
Request request = new Request.Builder()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
}
}
//---------------------适配器------------
package com.bawei.mvplx.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
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.bawei.mvplx.R;
import com.bumptech.glide.Glide;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
-
Created by 叶至成 on 2019/2/16.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
JSONArray result;
Context context;
public MyAdapter(Context context, JSONArray result) {
this.result = result;
this.context = context;
}@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layou_view, null, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
try {
JSONObject jsonObject = result.getJSONObject(i);
String title = jsonObject.getString(“title”);
String imageUrl = jsonObject.getString(“imageUrl”);
myViewHolder.tv_title.setText(title);
Glide.with(context).load(imageUrl).into(myViewHolder.iv);
} catch (Exception e) {
e.printStackTrace();
}}
@Override
public int getItemCount() {
return result.length();
}//自定义viewholder
public class MyViewHolder extends RecyclerView.ViewHolder {private final ImageView iv; private final TextView tv_title; public MyViewHolder(@NonNull View itemView) { super(itemView); iv = itemView.findViewById(R.id.img); tv_title = itemView.findViewById(R.id.tv_titile); }
}
}