Fresco+Retrofit+ButterKnife

1.Shop   IView

public interface IView {

    void success();

    void failed(Throwable t);

    void getShopData(ShopBean shopBean);

}

 

2.APP

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

 

3MainActivity

package com.example.lenovo.week1103.mvp.view;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.Log;
import android.widget.Toast;

import com.example.lenovo.week1103.R;
import com.example.lenovo.week1103.ShopDataActivity;
import com.example.lenovo.week1103.adapter.ShopAdapter;
import com.example.lenovo.week1103.bean.ShopBean;
import com.example.lenovo.week1103.mvp.presenter.ShopPresenter;

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

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity implements IView{

    @BindView(R.id.rv)
    RecyclerView rv;
    private ShopPresenter presenter;
   private List<ShopBean.DataBean.MiaoshaBean.ListBean> list;
    private ShopAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ButterKnife.bind(this);
        presenter = new ShopPresenter();
        presenter.attach(this);

        initData();
    }

    private void initData() {
        presenter.getShop();
        list = new ArrayList<>();
        adapter = new ShopAdapter(this,list);

        RecyclerView.LayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        rv.setLayoutManager(layoutManager);
        rv.setAdapter(adapter);

     //点击跳转详情页
        adapter.setOnShopClickListener(new ShopAdapter.OnShopClickListener() {
            @Override
            public void onShopClick(int pid) {
                Intent intent = new Intent(MainActivity.this, ShopDataActivity.class);
                intent.putExtra("pid",pid);
                startActivity(intent);


            }
        });


    }

    @Override
    public void success() {
        Toast.makeText(this, "网络请求成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void failed(Throwable t) {
        Toast.makeText(this, "" + t.getMessage(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void getShopData(ShopBean shopBean) {
          if (shopBean != null){
         //     Log.i("12345678",shopBean.getCode()+"");
              list.clear();
              list.addAll(shopBean.getData().getMiaosha().getList());
              adapter.notifyDataSetChanged();
          }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //解绑
        if (presenter != null){
            presenter.detach();
        }
    }
}

 

 

4 ShopMode

package com.example.lenovo.week1103.mvp.model;

import com.example.lenovo.week1103.bean.ShopBean;
import com.example.lenovo.week1103.contrant.IShoppingApi;
import com.example.lenovo.week1103.inter.ICallBack;
import com.example.lenovo.week1103.utils.HttpUtils;
import com.google.gson.Gson;

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

/**
 * 
 */

public class ShopModel {


    public void getData( final ICallBack callBack){
        IShoppingApi iShoppingApi = HttpUtils.getInstance().create(IShoppingApi.class);
        Call<ShopBean> shopBeanCall = iShoppingApi.show();
        shopBeanCall.enqueue(new Callback<ShopBean>() {
            @Override
            public void onResponse(Call<ShopBean> call, Response<ShopBean> response) {

                if(response.isSuccessful()&&response.body()!=null&&"0".equals(response.body().getCode())){

                    ShopBean body = response.body();
                        callBack.success(body);
                }else{

                }
            }

            @Override
            public void onFailure(Call<ShopBean> call, Throwable t) {
                callBack.failed((Exception) t);
            }
        });
    }




}

5. Presenter

package com.example.lenovo.week1103.mvp.presenter;

import android.util.Log;

import com.example.lenovo.week1103.bean.ShopBean;
import com.example.lenovo.week1103.inter.ICallBack;
import com.example.lenovo.week1103.mvp.model.ShopModel;
import com.example.lenovo.week1103.mvp.view.IView;

/**
 *
 */

public class ShopPresenter {

    private IView iv;
    //private int id =21;
    private ShopModel model;

    public void attach(IView iv){
        this.iv = iv;
        model = new ShopModel();

    }

    public void getShop(){

        model.getData(new ICallBack<ShopBean>() {
            @Override
            public void success(ShopBean shopBean) {
                iv.success();
                if(shopBean.getData() != null){
                    iv.getShopData(shopBean);
                }
            }

            @Override
            public void failed(Exception e) {
                iv.failed(e);
            }
        });

    }


    public void detach(){
        if(iv != null){
            iv = null;
        }
    }

}

 

6  ICallBack

public interface ICallBack<T> {

        void success(T t);

        void failed(Exception e);

}

 

7  API

public interface IShoppingApi {

    //商品展示
    @GET("home/getHome")
    Call<ShopBean> show();

    //商品详情
    @GET("product/getProductDetail")
    Call<Product> showBean (@Query("pid")int pid);


}

 

8  Utils

package com.example.lenovo.week1103.utils;


import java.util.concurrent.TimeUnit;

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

/**
 *
 */

public class HttpUtils {

      private static final String BASE_URL = "http://www.zhaoapi.cn/";

      private   Retrofit mRetrofit;

      private static final class SINGLE{
          private static final HttpUtils INSTANCE = new HttpUtils();
      }

      public static HttpUtils getInstance(){
          return SINGLE.INSTANCE;
      }

      private HttpUtils(){
            mRetrofit = new Retrofit.Builder()
                    .baseUrl(BASE_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 getmRetrofit(){
          return mRetrofit;
      }

      public <T> T create(Class<T> clazz){
          return mRetrofit.create(clazz);
      }



}

 

9  去掉s

public class ImgProcess {

    public static String getImg(String img){
        String[] a = img.split("\\|");
        return a[0];
    }
}

 

10 ShowAdapter

package com.example.lenovo.week1103.adapter;

import android.content.Context;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.lenovo.week1103.R;
import com.example.lenovo.week1103.bean.ShopBean;
import com.example.lenovo.week1103.utils.ImgProcess;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * 
 */

public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.Holder> {


    //接口回调
    public interface OnShopClickListener{
        void onShopClick(int pid);
    }

    private OnShopClickListener listener;

    public void setOnShopClickListener(OnShopClickListener listener){
        this.listener = listener;
    }


     private Context context;
     private List<ShopBean.DataBean.MiaoshaBean.ListBean> list;

    public ShopAdapter(Context context, List<ShopBean.DataBean.MiaoshaBean.ListBean> list) {
        this.context = context;
        this.list = list;
    }

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

    @Override
    public void onBindViewHolder(Holder holder, final int position) {
           holder.txtCount.setText(list.get(position).getTitle());
           holder.imgLogo.setImageURI(Uri.parse(ImgProcess.getImg(list.get(position).getImages())));

           holder.imgLogo.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   listener.onShopClick(list.get(position).getPid());
               }
           });
    }

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



    class Holder extends RecyclerView.ViewHolder{

        @BindView(R.id.img_logo)
   SimpleDraweeView imgLogo;
        @BindView(R.id.txt_count)
        TextView txtCount;

        public Holder(View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);
        }
    }
}

 

11 详情页 Prodct Ivew

public interface IViewDetail {

    void getShopDetail(Product product);

    void onFailed(Throwable t);

}

 

12 model

package com.example.lenovo.week1103.product.model;

import com.example.lenovo.week1103.bean.Product;
import com.example.lenovo.week1103.bean.ShopBean;
import com.example.lenovo.week1103.contrant.IShoppingApi;
import com.example.lenovo.week1103.inter.ICallBack;
import com.example.lenovo.week1103.utils.HttpUtils;

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

/**
 * Created by lenovo on 2018/11/4.
 */

public class ProductModel {

    public void getProduct(int pid, final ICallBack callBack){

        IShoppingApi iShoppingApi = HttpUtils.getInstance().create(IShoppingApi.class);

        Call<Product> call = iShoppingApi.showBean(pid);

        call.enqueue(new Callback<Product>() {
            @Override
            public void onResponse(Call<Product> call, Response<Product> response) {
                if (response.isSuccessful()){
                    if (response.body() != null &"0".equals(response.body().getCode())){
                        Product body = response.body();
                        callBack.success(body);
                    }
                }
            }

            @Override
            public void onFailure(Call<Product> call, Throwable t) {
           callBack.failed((Exception) t);
            }
        });

    }

}


13 presenter

package com.example.lenovo.week1103.product.presenter;

import com.example.lenovo.week1103.bean.Product;
import com.example.lenovo.week1103.inter.ICallBack;
import com.example.lenovo.week1103.product.model.ProductModel;
import com.example.lenovo.week1103.product.view.IViewDetail;

/**
 * 
 */

public class ProductPresenter {

    private IViewDetail iv;
    private ProductModel model;

    public void attach(IViewDetail iv){
        this.iv=iv;
        model = new ProductModel();
    }


    public void detach(){
        if (iv!=null){
            iv=null;
        }
    }


    public void getShopDetail(int pid){

        model.getProduct(pid, new ICallBack<Product>() {
            @Override
            public void success(Product product) {

                iv.getShopDetail(product);
            }

            @Override
            public void failed(Exception e) {
             iv.onFailed(e);
            }
        });
    }

}

14     ShopDataActivity

package com.example.lenovo.week1103;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import com.example.lenovo.week1103.adapter.ProductAdapter;
import com.example.lenovo.week1103.bean.Product;
import com.example.lenovo.week1103.product.presenter.ProductPresenter;
import com.example.lenovo.week1103.product.view.IViewDetail;

import org.greenrobot.eventbus.EventBus;

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

import butterknife.BindView;
import butterknife.ButterKnife;

public class ShopDataActivity extends AppCompatActivity implements IViewDetail {

    @BindView(R.id.lv)
    ListView lv;
    private List<Product> list;
    private ProductPresenter presenter;
    private ProductAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shop_data);

        ButterKnife.bind(this);
        Intent intent = getIntent();
        int i = intent.getIntExtra("pid", -1);
        presenter = new ProductPresenter();
        presenter.attach(this);
        presenter.getShopDetail(i);

        list = new ArrayList<>();
        adapter = new ProductAdapter(this,list);
       lv.setAdapter(adapter);


    }

    @Override
    public void getShopDetail(Product product) {
       list.clear();
       list.add(product);
       adapter.notifyDataSetChanged();
    }

    @Override
    public void onFailed(Throwable t) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (presenter!=null){
            presenter.detach();
        }
    }
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值