MVP

首先导依赖
//okhttp/拦截器
implementation ‘com.squareup.okhttp3:okhttp:3.11.0’
implementation ‘com.squareup.okhttp3:logging-interceptor:3.12.0’
//Gson解析
implementation ‘com.google.code.gson:gson:2.8.1’
//Glide图片加载
implementation ‘com.github.bumptech.glide:glide:4.8.0’
//recyclerView
implementation ‘com.android.support:recyclerview-v7:28.0.0’
//加网络权限

//接口
public interface IMainView<T> extends IBaseView {
    void onSuccess(T t);
    void onErr(String errMessage);
}
 

=============================

//BasePresenter
    public class BasePresenter<V> {
    private V view;

public V getView() {
    return view;
}

    public void setView(V view) {
        this.view = view;
    }
    public void detachView(){
        this.view=null;
    }
}
================================================
//presenter
public class LoginPresenter extends BasePresenter<IMainView<LoginBean>> {

    private final HttpUtils httpUtils;

    public LoginPresenter(){
        httpUtils = HttpUtils.getInstance();
    }
    public void loadDataFormNet(HashMap<String,String> hashMap){
        httpUtils.postData(Contant.Login, LoginBean.class, hashMap, new HttpUtils.CallbackData<LoginBean>() {

            @Override
            public void onResponse(LoginBean loginBean) {
                if (getView()!=null){
                    getView().onSuccess(loginBean);
                }
            }

            @Override
            public void onFail(String err) {
                getView().onErr(err);
            }
        });
    }
    public void LoadDataFromNetRegister(HashMap<String,String> hashMap){
        httpUtils.postData(Contant.Zhuce, LoginBean.class, hashMap, new HttpUtils.CallbackData<LoginBean>() {

            @Override
            public void onResponse(LoginBean loginBean) {
                if (getView()!=null){
                    getView().onSuccess(loginBean);
                }
            }

            @Override
            public void onFail(String err) {
                getView().onErr(err);
            }
        });
    }

}
===============================
//网络请求
public class HttpUtils<T> {
    private final OkHttpClient okHttpClient;
    private HttpUtils(){
        okHttpClient = new OkHttpClient.Builder()
                .addNetworkInterceptor(new LogginIntecepter())
                .readTimeout(5, TimeUnit.SECONDS)
                .writeTimeout(5, TimeUnit.SECONDS)
                .build();
    }

    public static HttpUtils getInstance(){
        return HttpUtilsInstance.httpUtils;
    }


    private static class HttpUtilsInstance{
        private static HttpUtils httpUtils = new HttpUtils();
    }

    private class LogginIntecepter implements Interceptor {

        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            RequestBody body = request.body();
            Log.e("myMessage","");
            Headers headers = request.headers();
            Response response = chain.proceed(request);
            Headers headers1 = response.headers();

            return response;
        }
    }

    @SuppressLint("HandlerLeak")
    Handler handler = new Handler(){

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if(msg.what == 0){
                T t = (T) msg.obj;
                mCallback.onResponse(t);
            } else {
                String err = (String) msg.obj;
                mCallback.onFail(err);
            }

        }
    };

    private CallbackData mCallback;
    public void getData(String url, final Class<T> tClass, final CallbackData callbackData){
        this.mCallback = callbackData;
        Request request = new Request.Builder()
                .url(url)
                .get()
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Message message = handler.obtainMessage();
                message.what = -1;
                message.obj = e.getMessage();
                handler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Gson gson = new Gson();
                T t = gson.fromJson(string, tClass);
                Message message = handler.obtainMessage();
                message.obj = t;
                message.what = 0;
                handler.sendMessage(message);
            }
        });
    }

    public void postData(String url, final Class<T> tClass, HashMap<String,String> hashMap, final CallbackData callbackData){
        this.mCallback = callbackData;

        FormBody.Builder builder = new FormBody.Builder();


        for (Map.Entry<String, String> stringStringEntry : hashMap.entrySet()) {
            String key = stringStringEntry.getKey();
            String value = stringStringEntry.getValue();
            builder.add(key,value);
        }
        FormBody formBody = builder.build();

        Request request = new Request.Builder()
                .url(url)
                .post(formBody)
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Message message = handler.obtainMessage();
                message.what = -1;
                message.obj = e.getMessage();
                handler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Gson gson = new Gson();
                T t = gson.fromJson(string, tClass);
                Message message = handler.obtainMessage();
                message.obj = t;
                message.what = 0;
                handler.sendMessage(message);
            }
        });
    }


    public interface CallbackData<D>{
         void onResponse(D d);
         void onFail(String err);
    }

}
==================================================
//App Contant
public class Contant {
    public static final String URL="http://mobile.bwstudent.com/small/commodity/v1/commodityList";
    public static final String Login="http://172.17.8.100/small/user/v1/login";
    public static final String Zhuce="http://172.17.8.100/small/user/v1/register";
    public static final String LunBo="http://mobile.bwstudent.com/small/commodity/v1/bannerShow";
}
====================================================
BaseActivity
public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(bindView());

        initView();
        initData();
    }

    public abstract void initView();

    public abstract void initData();

    public abstract int bindView();
}
===================================================================
BaseFragment
public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(bindView(),container,false);

}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    initView();
    initData();
}
public abstract int bindView();
protected abstract void initView();
protected abstract void initData();

}
======================================
public class Frag_home extends BaseFragment implements IMainView<HomeBean> {

    private TextView catalog_home;
    private TextView search_home;
    private EditText edit_sou_home;
    private RecyclerView sell_well_home;
    private RecyclerView fashion_home;
    private RecyclerView life_home;
    private HomePresenter homePresenter;
    private XBanner banner;
    private SellAdapter sellAdapter;
    private FashionAdapter fashionAdapter;
    private LifeAdapter lifeAdapter;
    private List<String> imgesUrl;

    @Override
    public int bindView() {
        return R.layout.frag_home;
    }

    @Override
    protected void initView() {
        catalog_home = getActivity().findViewById(R.id.catalog_home);
        search_home = getActivity().findViewById(R.id.search_home);
        edit_sou_home = getActivity().findViewById(R.id.edit_sou_home);
        banner = getActivity().findViewById(R.id.banner_home);
        sell_well_home = getActivity().findViewById(R.id.sell_well_home);
        fashion_home = getActivity().findViewById(R.id.fashion_home);
        life_home = getActivity().findViewById(R.id.life_home);

    @Override
    protected void initData() {
  
        homePresenter = new HomePresenter();
        homePresenter.setView(this);
        homePresenter.LoadHomeNet();
        LinearLayoutManager sell_well_home1=new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false);
        LinearLayoutManager fashion_home1=new LinearLayoutManager(getActivity());
        GridLayoutManager life_home1=new GridLayoutManager(getActivity(),2);

        sell_well_home.setLayoutManager(sell_well_home1);
        fashion_home.setLayoutManager(fashion_home1);
        life_home.setLayoutManager(life_home1);

        sellAdapter = new SellAdapter(getActivity());
        sell_well_home.setAdapter(sellAdapter);
        sellAdapter.notifyDataSetChanged();

        fashionAdapter = new FashionAdapter(getActivity());
        fashion_home.setAdapter(fashionAdapter);
        fashionAdapter.notifyDataSetChanged();

        lifeAdapter = new LifeAdapter(getActivity());
        life_home.setAdapter(lifeAdapter);
        lifeAdapter.notifyDataSetChanged();

    }

    @Override
    public void onSuccess(HomeBean homeBean) {
        sellAdapter.setData(homeBean.getResult().getRxxp().getCommodityList());
        fashionAdapter.setData(homeBean.getResult().getMlss().getCommodityList());
        lifeAdapter.setData(homeBean.getResult().getPzsh().getCommodityList());
    }

    @Override
    public void onErr(String errMessage) {

    }
}
=====================================================
recyclerview适配器
public class SellAdapter extends RecyclerView.Adapter<SellAdapter.MyViewHolder> {
    private Context context;
    private ArrayList<HomeBean.ResultBean.RxxpBean.CommodityListBean> arr=new ArrayList<>();

    public SellAdapter(Context context) {
        this.context = context;
    }
    public void setData(List<HomeBean.ResultBean.RxxpBean.CommodityListBean> list){
        if (list!=null){
            arr.addAll(list);
            notifyDataSetChanged();
        }
    }


    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view=LayoutInflater.from(context).inflate(R.layout.sell_item,viewGroup,false);
        MyViewHolder myViewHolder=new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
        if (arr.get(i)!=null){
            final int commodityId = arr.get(i).getCommodityId();
            Glide.with(context).load(arr.get(i).getMasterPic()).into(myViewHolder.img);
            myViewHolder.name.setText(arr.get(i).getCommodityName());
            myViewHolder.price.setText("¥"+arr.get(i).getPrice());

            myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(context, DetailsActivity.class);
                    intent.putExtra("id",commodityId);
                    context.startActivity(intent);
                }
            });
        }
    }



    @Override
    public int getItemCount() {
        return arr.size();
    }
    public class MyViewHolder extends RecyclerView.ViewHolder{

        private final ImageView img;
        private final TextView name;
        private final TextView price;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.sell_img);
            name = itemView.findViewById(R.id.sell_name);
            price = itemView.findViewById(R.id.sell_price);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值