MVP recyclerview

//–依赖 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);
     }
    

    }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值