MVP 登录 注册 +RecyclerView展示

adpter适配器
package com.bw.zsd.myapplication0215.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.bw.zsd.myapplication0215.R;
import com.bw.zsd.myapplication0215.bean.CartBean;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: ZSD
 * @Date: 2019/2/17 0017 16:08:18
 * @Description:
 */
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
    private List<CartBean.ResultBean> list;
    private Context context;
    public RecyclerViewAdapter( List<CartBean.ResultBean> list,Context context) {
        this.context = context;
        this.list = list;
    }
    @NonNull
    @Override
    public RecyclerViewAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.reitem, null,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolder viewHolder, int i) {
        String masterPic = list.get(i).getMasterPic();
        String commodityName = list.get(i).getCommodityName();
        Glide.with(context).load(masterPic).placeholder(R.drawable.ic_launcher_background).error(R.drawable.ic_launcher_background).into(viewHolder.imageView);
        viewHolder.title.setText(commodityName);
    }

    @Override
    public int getItemCount() {
        if (list != null) {
            return list.size();
        }else {
         return 0;
        }
    }

    public class ViewHolder extends  RecyclerView.ViewHolder{
        public ImageView masterPic;
        private  TextView title,info;
        private  TextView pic_id;
        private final ImageView imageView;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            title = itemView.findViewById(R.id.title_id);
            pic_id = itemView.findViewById(R.id.pic_id);
            info = itemView.findViewById(R.id.infmention_id);
            imageView = itemView.findViewById(R.id.image_id);
        }
    }
}
bean类
package com.bw.zsd.myapplication0215.bean;

import java.util.List;

/**
 * @Auther: ZSD
 * @Date: 2019/2/16 0016 21:30:55
 * @Description:
 */
public class CartBean {

    private String message;
    private String status;
    private List<ResultBean> result;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<ResultBean> getResult() {
        return result;
    }

    public void setResult(List<ResultBean> result) {
        this.result = result;
    }

    public static class ResultBean {


        private int commodityId;
        private String commodityName;   // name
        private String masterPic; // 图片路径
        private int price;
        private int saleNum;

        public int getCommodityId() {
            return commodityId;
        }

        public void setCommodityId(int commodityId) {
            this.commodityId = commodityId;
        }

        public String getCommodityName() {
            return commodityName;
        }

        public void setCommodityName(String commodityName) {
            this.commodityName = commodityName;
        }

        public String getMasterPic() {
            return masterPic;
        }

        public void setMasterPic(String masterPic) {
            this.masterPic = masterPic;
        }

        public int getPrice() {
            return price;
        }

        public void setPrice(int price) {
            this.price = price;
        }

        public int getSaleNum() {
            return saleNum;
        }

        public void setSaleNum(int saleNum) {
            this.saleNum = saleNum;
        }
    }
}

interfaces

登录接口
package com.bw.zsd.myapplication0215.interfaces;

/**
 * @Auther: ZSD
 * @Date: 2019/2/15 0015 19:34:17
 * @Description:
 */
public interface LoginCallBack {
    public void RegSucces(String succesinfo);
    public void RegError(String errinfo);
}

package com.bw.zsd.myapplication0215.interfaces;

import com.bw.zsd.myapplication0215.bean.CartBean;

/**
 * @Auther: ZSD
 * @Date: 2019/2/15 0015 16:32:30
 * @Description:
 */

public interface ReCallBack {
    public void ReSucces(CartBean SuccesObj);
    public void ReError(String  ErrorStr);
}

model

package com.bw.zsd.myapplication0215.model;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

import com.bw.zsd.myapplication0215.interfaces.LoginCallBack;
import com.bw.zsd.myapplication0215.util.OkhttpClientUtile;

/**
 * @Auther: ZSD
 * @Date: 2019/2/15 0015 09:00:41
 * @Description: 业务逻辑
 */
public class ModelLogin implements ModelLoginInterface {
    LoginCallBack loginCallBack;
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            String info = (String) msg.obj;
            if (info.contains("失败")) {
                loginCallBack.RegError(info);
            }else {
                loginCallBack.RegSucces(info);
            }
        }
    };
    @Override
    public void requestNetWork(int rt, String phone, String pwd, LoginCallBack loginCallBack) {
        this.loginCallBack = loginCallBack;
        OkhttpClientUtile.PostRequest(rt,phone,pwd,handler);
    }
}
接口
package com.bw.zsd.myapplication0215.model;

import com.bw.zsd.myapplication0215.interfaces.LoginCallBack;

/**
 * @Auther: ZSD
 * @Date: 2019/2/15 0015 19:03:52
 * @Description: 请求网络数据
 */
public interface ModelLoginInterface {
    public void requestNetWork(int rt,String phone,String pwd,LoginCallBack loginCallBack);
}

package com.bw.zsd.myapplication0215.model;

import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

import com.bw.zsd.myapplication0215.bean.CartBean;
import com.bw.zsd.myapplication0215.interfaces.LoginCallBack;
import com.bw.zsd.myapplication0215.interfaces.ReCallBack;
import com.bw.zsd.myapplication0215.util.OkhttpClientUtile;
import com.google.gson.Gson;

import java.util.List;


/**
 * @Auther: ZSD
 * @Date: 2019/2/15 0015 19:43:41
 * @Description:判断正确错误
 */
public class ModelRe implements ModelReInterface {
    ReCallBack reCallBack;
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            String s = (String) msg.obj;
            Gson gson = new Gson();
            CartBean cartBean = gson.fromJson(s, CartBean.class);
            if (cartBean != null) {
                reCallBack.ReSucces(cartBean);
            }else {
                reCallBack.ReError("请求商品失败");
            }
        }
    };
    @Override
    public void RequestDate(ReCallBack callBack) {
        this.reCallBack=callBack;
        OkhttpClientUtile.getRequest(handler);
    }
}

package com.bw.zsd.myapplication0215.model;

import com.bw.zsd.myapplication0215.bean.CartBean;
import com.bw.zsd.myapplication0215.interfaces.ReCallBack;

/**
 * @Auther: ZSD
 * @Date: 2019/2/16 0016 21:38:39
 * @Description:
 */
public interface ModelReInterface {
    public void RequestDate(ReCallBack callBack);
}

presnter

package com.bw.zsd.myapplication0215.presenter;

import android.content.Context;

import com.bw.zsd.myapplication0215.interfaces.LoginCallBack;

/**
 * @Auther: ZSD
 * @Date: 2019/2/15 0015 09:06:18
 * @Description: 控制层
 */
public interface PersenterLoginInterface {
    public void getPhonePwd(int rt,String Phone, String pwd);
}

package com.bw.zsd.myapplication0215.presenter;

import com.bw.zsd.myapplication0215.bean.CartBean;
import com.bw.zsd.myapplication0215.interfaces.ReCallBack;
import com.bw.zsd.myapplication0215.model.ModelRe;
import com.bw.zsd.myapplication0215.model.ModelReInterface;
import com.bw.zsd.myapplication0215.view.ViewReInterface;

/**
 * @Auther: ZSD
 * @Date: 2019/2/17 0017 11:22:40
 * @Description:
 */
public class PersenterRe implements PresenterReInterface{
    ViewReInterface viewReInterface;
    ModelReInterface modelReInterface;
    public PersenterRe(ViewReInterface viewReInterface) {
        this.viewReInterface = viewReInterface;
        modelReInterface = new ModelRe();
    }
    @Override
    public void toModelCtrell() {
        modelReInterface.RequestDate( new ReCallBack() {
            @Override
            public void ReSucces(CartBean SuccesObj) {
                viewReInterface.refreshRecyView(SuccesObj);
            }
            @Override
            public void ReError(String ErrorStr) {
                viewReInterface.refreshRecyView(ErrorStr);
            }
        });
    }
}


package com.bw.zsd.myapplication0215.presenter;
import android.content.Context;

import com.bw.zsd.myapplication0215.interfaces.LoginCallBack;
import com.bw.zsd.myapplication0215.model.ModelLogin;
import com.bw.zsd.myapplication0215.model.ModelLoginInterface;
import com.bw.zsd.myapplication0215.view.ViewInterface;

/**
 * @Auther: ZSD
 * @Date: 2019/2/15 0015 09:05:52
 * @Description:
 */
public class PresenterLogin implements PersenterLoginInterface {
    ModelLoginInterface modelLoginInterface;
    ViewInterface viewInterface;
    public PresenterLogin(ViewInterface viewInterface) {
        modelLoginInterface = new ModelLogin();
        this.viewInterface = viewInterface;
    }
    @Override
    public void getPhonePwd(final int rt, String Phone, String pwd) {
        modelLoginInterface.requestNetWork(rt, Phone, pwd, new LoginCallBack() {
            @Override
            public void RegSucces(String succesinfo) {
                viewInterface.refrechDisplay(rt,succesinfo);
            }
            @Override
            public void RegError(String errinfo) {
                viewInterface.refrechDisplay(rt,errinfo);
            }
        });
    }

}

package com.bw.zsd.myapplication0215.presenter;

import com.bw.zsd.myapplication0215.bean.CartBean;

/**
 * @Auther: ZSD
 * @Date: 2019/2/17 0017 11:21:16
 * @Description:
 */
public interface PresenterReInterface {
    public void toModelCtrell();

}

util

package com.bw.zsd.myapplication0215.util;
import android.os.Handler;
import android.os.Message;
import org.json.JSONObject;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
 * @Auther: ZSD
 * @Date: 2019/2/16 0016 21:47:52
 * @Description:
 */
public class OkhttpClientUtile {
    static String info = "";
    public static void PostRequest(int rt, String phone, String pwd, final Handler handler) {
        String url = "";
        if (rt == 0) {
            //登录接口
            url = "http://172.17.8.100/small/user/v1/login";
        } else {
            url = "http://172.17.8.100/small/user/v1/register";
        }
        OkHttpClient okHttpClient = new OkHttpClient();
        FormBody builder = new FormBody.Builder()
                .add("phone", phone)
                .add("pwd", pwd)
                .build();
        final Request request = new Request.Builder()
                .post(builder)
                .url(url)
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                info = "您注册失败了!";
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String jsonStr = response.body().string();
                try {
                    JSONObject jsonObject = new JSONObject(jsonStr);
                    info = jsonObject.getString("message");
                    Message message = new Message();
                    message.obj = info;
                    handler.sendMessage(message);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public static void getRequest(final Handler mhandler) {
        OkHttpClient okHttpClient = new OkHttpClient();
         Request request = new Request.Builder()
                .get()
                .url("http://172.17.8.100/small/commodity/v1/findCommodityByKeyword?keyword=3&page=1&count=5")
                .build();
        okHttpClient.newCall(request).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();
                Message message = new Message();
                message.obj=string;
                mhandler.sendMessage(message);
            }
        });
    }
}

view

package com.bw.zsd.myapplication0215.view;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;

import com.bw.zsd.myapplication0215.R;
import com.bw.zsd.myapplication0215.adapter.RecyclerViewAdapter;
import com.bw.zsd.myapplication0215.bean.CartBean;
import com.bw.zsd.myapplication0215.presenter.PersenterRe;
import com.bw.zsd.myapplication0215.presenter.PresenterReInterface;

import java.util.ArrayList;
import java.util.List;

public class Main2Activity extends AppCompatActivity implements ViewReInterface{
    private RecyclerView recyclerView;
    private PresenterReInterface presenterReInterface;
    private RecyclerViewAdapter recyclerViewAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        presenterReInterface = new PersenterRe(this);
        recyclerView = findViewById(R.id.main2_RecyclerView);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(linearLayoutManager);
        presenterReInterface.toModelCtrell();
    }
    @Override
    public void refreshRecyView(Object obj) {
        CartBean cartBean = (CartBean) obj;
        recyclerViewAdapter = new RecyclerViewAdapter(cartBean.getResult(), Main2Activity.this);
        Toast.makeText(Main2Activity.this,"sdsa561d56sa41d5"+obj,Toast.LENGTH_SHORT).show();
        recyclerView.setAdapter(recyclerViewAdapter);
    }
}


package com.bw.zsd.myapplication0215.view;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.bw.zsd.myapplication0215.R;
import com.bw.zsd.myapplication0215.interfaces.LoginCallBack;
import com.bw.zsd.myapplication0215.presenter.PresenterLogin;
import com.bw.zsd.myapplication0215.presenter.PersenterLoginInterface;

public class MainActivity extends AppCompatActivity implements ViewInterface, View.OnClickListener{
    EditText UserName;
    EditText UserPwd;
    Button but_login;
    Button but_registe;
    private PersenterLoginInterface userPresenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        userPresenter = new PresenterLogin(this);
    }
        private void initView () {
            UserName = findViewById(R.id.ed_UserName_id);
            UserPwd = findViewById(R.id.ed_PassWord_id);
            but_login = findViewById(R.id.but_login_id);
            but_registe = findViewById(R.id.but_regist_id);
            but_login.setOnClickListener(this);
            but_registe.setOnClickListener(this);
        }
    @Override
    public void onClick(View v) {
        if (R.id.but_login_id == v.getId()) {
            String userName = UserName.getText().toString();
            String passWord = UserPwd.getText().toString();
            userPresenter.getPhonePwd(0,userName,passWord);
        }
        if (R.id.but_regist_id == v.getId()) {
            String userNames = UserName.getText().toString();
            String passWords = UserPwd.getText().toString();
            userPresenter.getPhonePwd(1,userNames,passWords);
        }
    }
    @Override
    public void refrechDisplay(int tag, String info) {
        if(info.equals("登录成功")){
            Toast.makeText(this , info , Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(this , Main2Activity.class);
            startActivity(intent);
        }else {
            Toast.makeText(this , info , Toast.LENGTH_SHORT).show();
        }
    }
}


package com.bw.zsd.myapplication0215.view;

/**
 * @Auther: ZSD
 * @Date: 2019/2/15 0015 09:03:50
 * @Description: 显示 成功失败
 */
public interface ViewInterface {

    //登陆等dai
    public void refrechDisplay(int tag,String info);

}

package com.bw.zsd.myapplication0215.view;

import com.bw.zsd.myapplication0215.bean.CartBean;

/**
 * @Auther: ZSD
 * @Date: 2019/2/17 0017 11:25:48
 * @Description:
 */
public interface ViewReInterface {
    public void refreshRecyView(Object obj);
}

依赖

implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.codavel.bolina:interceptor_okhttp3:1.0.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'

猜你喜欢

转载自blog.csdn.net/weixin_44293974/article/details/87559499