retrofit+mvp

package com.example.zhoukaomoni.api;

import com.example.zhoukaomoni.bean.GoodsBean;
import com.example.zhoukaomoni.bean.ProductBean;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;

/**
 * Created by 。。。。 on 2018/11/3.
 */

public interface ApiService {
    @GET("home/getHome")
    Call<GoodsBean> getgoods();
    @GET("product/getProductDetail")
    Call<ProductBean> getproduct(@Query("pid") int pid);
}

二封装bean类

package com.example.zhoukaomoni.adapter;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.zhoukaomoni.R;
import com.example.zhoukaomoni.bean.GoodsBean;
import com.example.zhoukaomoni.view.ShowActivity;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * Created by 。。。。 on 2018/11/3.
 */

public class GoodsAdaapter extends RecyclerView.Adapter<GoodsAdaapter.ViewHolder> {
    private Context context;
    private List<GoodsBean.DataBean.FenleiBean> list;

    public GoodsAdaapter(Context context, List<GoodsBean.DataBean.FenleiBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v=View.inflate(context, R.layout.item_goods,null);
        ViewHolder  holder= new ViewHolder(v);
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {
        holder.simpleDraweeView.setImageURI(list.get(position).getIcon());
        holder.txtname.setText(list.get(position).getName());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(context, ShowActivity.class);
                intent.putExtra("id",list.get(position).getCid());
                context.startActivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder {
        private  SimpleDraweeView simpleDraweeView;
        private  TextView txtname;

        public ViewHolder(View itemView) {
            super(itemView);
            simpleDraweeView = itemView.findViewById(R.id.simple);
            txtname = itemView.findViewById(R.id.txt_title);
        }
    }
}

package com.example.zhoukaomoni.httputils;

import java.net.URL;
import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by 。。。。 on 2018/11/3.
 */

public class HttpUtils {
    private static final String Url="http://www.zhaoapi.cn/";
    private  Retrofit retrofit;
    private static final class contast{
        private static HttpUtils  instance = new HttpUtils();
    }
    public static HttpUtils getinstance(){
        return contast.instance;
    }
    private HttpUtils(){
        retrofit = new Retrofit.Builder()
                .baseUrl(Url)
                .addConverterFactory(GsonConverterFactory.create())
                .client(buildokHttpClient())
                .build();
    }
    private OkHttpClient buildokHttpClient(){
        return new OkHttpClient.Builder()
                .readTimeout(5000, TimeUnit.MILLISECONDS)
                .writeTimeout(5000,TimeUnit.MILLISECONDS)
                .build();
    }
    public Retrofit getretrofit(){
        return retrofit;
    }
    public <T> T create(Class<T> aClass){
        return retrofit.create(aClass);
    }
}

package com.example.zhoukaomoni.callback;

/**
 * Created by 。。。。 on 2018/11/3.
 */

public interface ICallback {
    void OnSuccess(Object o);
    void OnFailed(Exception e);
}

package com.example.zhoukaomoni.model;

import com.example.zhoukaomoni.api.ApiService;
import com.example.zhoukaomoni.bean.GoodsBean;
import com.example.zhoukaomoni.bean.ProductBean;
import com.example.zhoukaomoni.callback.ICallback;
import com.example.zhoukaomoni.httputils.HttpUtils;

import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

/**
 * Created by 。。。。 on 2018/11/3.
 */

public class GoodsModel {
     int id;
    public void Goods(final ICallback Callback){
        ApiService apiService= HttpUtils.getinstance().create(ApiService.class);
        Call<GoodsBean> getgoods = apiService.getgoods();
        getgoods.enqueue(new Callback<GoodsBean>() {
            @Override
            public void onResponse(Call<GoodsBean> call, Response<GoodsBean> response) {
                if(response.isSuccessful()){
                    GoodsBean body = response.body();
                    Callback.OnSuccess(body);
                }
            }
            @Override
            public void onFailure(Call<GoodsBean> call, Throwable t) {
                Callback.OnFailed((Exception) t);
            }
        });
    }
    public void Product(final ICallback callback,int id){
        ApiService apiService=HttpUtils.getinstance().create(ApiService.class);
        Call<ProductBean> getproduct=apiService.getproduct(id);
        getproduct.enqueue(new Callback<ProductBean>() {
            @Override
            public void onResponse(Call<ProductBean> call, Response<ProductBean> response) {
                if(response.isSuccessful()){
                    ProductBean body = response.body();
                    callback.OnSuccess(body);
                }
            }

            @Override
            public void onFailure(Call<ProductBean> call, Throwable t) {
                callback.OnFailed((Exception) t);
            }
        });
    }
}

数据加载View

package com.example.zhoukaomoni.view;

import com.example.zhoukaomoni.bean.GoodsBean;
import com.example.zhoukaomoni.bean.ProductBean;

import java.util.List;

/**
 * Created by 。。。。 on 2018/11/3.
 */

public interface IView {
    void onsuccess(List<GoodsBean.DataBean.FenleiBean> list);
    void onfailed(Exception e);
}

商品展示View

package com.example.zhoukaomoni.view;

import com.example.zhoukaomoni.bean.ProductBean;

import java.util.List;

/**
 * Created by 。。。。 on 2018/11/3.
 */

public interface PView {
    void onfailed(Exception e);

    void onsuccess(ProductBean.DataBean data);
}

package com.example.zhoukaomoni.presenter;

import com.example.zhoukaomoni.bean.GoodsBean;
import com.example.zhoukaomoni.bean.ProductBean;
import com.example.zhoukaomoni.callback.ICallback;
import com.example.zhoukaomoni.model.GoodsModel;
import com.example.zhoukaomoni.view.IView;
import com.example.zhoukaomoni.view.PView;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.List;

/**
 * Created by 。。。。 on 2018/11/3.
 */

public class GoodsPresenter {
    private IView iv;
    private GoodsModel model;
    private PView piv;
    private GoodsModel pModel;

    public void pattach(PView piv){
        this.piv=piv;
        pModel = new GoodsModel();
    }
    public void attach(IView iv){
        this.iv=iv;
        model = new GoodsModel();
    }
    public void getgoods(){
        Type type=new TypeToken<GoodsBean>(){}.getType();
        model.Goods(new ICallback() {
            @Override
            public void OnSuccess(Object o) {
                GoodsBean goodsBean= (GoodsBean) o;
                iv.onsuccess(goodsBean.getData().getFenlei());
            }

            @Override
            public void OnFailed(Exception e) {
                iv.onfailed(e);
            }
        });
    }
    public void getproduct(int id){
        pModel.Product(new ICallback() {
            @Override
            public void OnSuccess(Object o) {
                ProductBean productBean= (ProductBean) o;
                piv.onsuccess(productBean.getData());
            }

            @Override
            public void OnFailed(Exception e) {
                piv.onfailed(e);
            }
        },id);
    }
}

package com.example.zhoukaomoni.view;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;

import com.example.zhoukaomoni.R;
import com.example.zhoukaomoni.adapter.GoodsAdaapter;
import com.example.zhoukaomoni.bean.GoodsBean;
import com.example.zhoukaomoni.presenter.GoodsPresenter;

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

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity implements IView {

    @BindView(R.id.recycler_view)
    RecyclerView recyclerView;
    private GoodsAdaapter adaapter;
    private GoodsPresenter goodsPresenter;
    private List<GoodsBean.DataBean.FenleiBean> lists;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        RecyclerView.LayoutManager layoutManager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(layoutManager);
        lists = new ArrayList<>();
        goodsPresenter = new GoodsPresenter();
        goodsPresenter.attach(this);
        goodsPresenter.getgoods();
        adaapter = new GoodsAdaapter(this, lists);
        recyclerView.setAdapter(adaapter);

    }

    @Override
    public void onsuccess(List<GoodsBean.DataBean.FenleiBean> list) {
        if(list!=null){
            lists.clear();
            lists.addAll(list);
            adaapter.notifyDataSetChanged();
        }
    }

    @Override
    public void onfailed(Exception e) {

    }
}

package com.example.zhoukaomoni.view;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.TextView;

import com.example.zhoukaomoni.R;
import com.example.zhoukaomoni.bean.ProductBean;
import com.example.zhoukaomoni.presenter.GoodsPresenter;
import com.facebook.drawee.view.SimpleDraweeView;

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

import butterknife.BindView;
import butterknife.ButterKnife;

public class ShowActivity extends AppCompatActivity implements PView {

    @BindView(R.id.drawee)
    SimpleDraweeView drawee;
    @BindView(R.id.txt_title)
    TextView txtTitle;
    private List<ProductBean.DataBean> lists;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        ButterKnife.bind(this);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
        lists = new ArrayList<>();
        int id = getIntent().getIntExtra("id", 21);
        GoodsPresenter goodsPresenter = new GoodsPresenter();
        goodsPresenter.pattach(this);
        goodsPresenter.getproduct(id);
    }

    @Override
    public void onfailed(Exception e) {

    }

    @Override
    public void onsuccess(ProductBean.DataBean data) {
        drawee.setImageURI(data.getImages().split("\\|")[0]);
        txtTitle.setText(data.getTitle());
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值