分类

api

package myjd.jd.com.imitate2jd.view.frag.sort.api;

import myjd.jd.com.imitate2jd.bean.DetailsBean;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.ProductsBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
import retrofit2.http.GET;
import retrofit2.http.Query;
import rx.Observable;

public interface ApiIn {
    /**
     * 商品分类接口
     * @return
     */
    @GET("product/getCatagory")
    Observable<SortBean> GetCatagoryBean();

    /**
     * 商品子分类接口
     * @param cid
     * @return
     */
   @GET("product/getProductCatagory")
    Observable<ProductCatagoryBean>  GetProductCatagoryBean(@Query("cid") int cid);

    /**
     * 子分类详情接口
     * @param pscid
     * @return
     */
   @GET("product/getProducts")
    Observable<ProductsBean>  GetProductsBean(@Query("pscid") int pscid);

    /**
     * 商品详情
     */
    @GET("product/getProductDetail")
    Observable <DetailsBean> getdetail(@Query("pid") int pid);
}


MOdel Presenter  view 接口

package myjd.jd.com.imitate2jd.view.frag.sort.contract;

import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.SortBean;

public interface FenLeContract {

    interface Model {
        void GetCatagoryhttp(ModelData gData);
        void GetProductCatagoryhttp(int cid, ModelData gData);
        public interface ModelData{
            void getData(SortBean catagoryBean);
            void getData(ProductCatagoryBean productCatagoryBean);
        }

    }

    interface View {
        void GetCatagoryBean(SortBean catagoryBean);
        void GetProductCatagoryBean(ProductCatagoryBean productCatagoryBean);
    }

    interface Presenter {
        void GetCatagoryhttp();
        void GetProductCatagoryhttp(int cid);
        void onDestry();
    }
}


Mole 层

package myjd.jd.com.imitate2jd.view.frag.sort.model;

import android.util.Log;

import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
import myjd.jd.com.imitate2jd.utils.Fenzhuang;
import myjd.jd.com.imitate2jd.view.frag.sort.api.ApiIn;
import myjd.jd.com.imitate2jd.view.frag.sort.contract.FenLeContract;
import okhttp3.logging.HttpLoggingInterceptor;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

public class FenLeModel implements FenLeContract.Model {
    @Override
    public void GetCatagoryhttp(final ModelData gData) {
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        Fenzhuang.setInterceptor(httpLoggingInterceptor);
        ApiIn apiInterface = Fenzhuang.createService(ApiIn.class);
        apiInterface.GetCatagoryBean()
                .subscribeOn(Schedulers.io())//IO线程加载数据
                .observeOn(AndroidSchedulers.mainThread())//主线程显示数据
                .subscribe(new Observer<SortBean>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.i("ll","1111");

                    }

                    @Override
                    public void onNext(SortBean catagoryBean) {
                        Log.i("ll","2222");
                      gData.getData(catagoryBean);
                    }
                });

    }

    @Override
    public void GetProductCatagoryhttp(int cid, final ModelData gData) {
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        Fenzhuang.setInterceptor(httpLoggingInterceptor);
        ApiIn apiInterface = Fenzhuang.createService(ApiIn.class);
        apiInterface.GetProductCatagoryBean(cid)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ProductCatagoryBean>() {
                    @Override
                    public void onCompleted() {
                    }
                    @Override
                    public void onError(Throwable e) {
                    }
                    @Override
                    public void onNext(ProductCatagoryBean productCatagoryBean) {
                        Log.i("ll","22223");
                        gData.getData(productCatagoryBean);
                    }
                });
    }
}


Presenter层

 

package myjd.jd.com.imitate2jd.view.frag.sort.presenter;

import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
import myjd.jd.com.imitate2jd.view.frag.sort.contract.FenLeContract;
import myjd.jd.com.imitate2jd.view.frag.sort.model.FenLeModel;
import myjd.jd.com.imitate2jd.view.frag.sort.view.Fragment_Sort;

public class FenLePresenter implements FenLeContract.Presenter,FenLeContract.Model.ModelData {
    private FenLeContract.View view;
    private FenLeContract.Model model;
    public FenLePresenter(FenLeContract.View view) {
        this.view=view;
       this.model=new FenLeModel();

    }

    @Override
    public void GetCatagoryhttp() {
        model.GetCatagoryhttp(this);
    }

    @Override
    public void GetProductCatagoryhttp(int cid) {
        model.GetProductCatagoryhttp(cid, this);
    }


    @Override
    public void onDestry() {

    }

   @Override
    public void getData(SortBean catagoryBean) {
        view.GetCatagoryBean(catagoryBean);
    }

    @Override
    public void getData(ProductCatagoryBean productCatagoryBean) {
        view.GetProductCatagoryBean(productCatagoryBean);
    }


}


view 层

package myjd.jd.com.imitate2jd.view.frag.sort.view;


import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import myjd.jd.com.imitate2jd.R;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
import myjd.jd.com.imitate2jd.view.frag.sort.adapter.FenleiRightAdapter;
import myjd.jd.com.imitate2jd.view.frag.sort.adapter.MyTabAdapter;
import myjd.jd.com.imitate2jd.view.frag.sort.contract.FenLeContract;
import myjd.jd.com.imitate2jd.view.frag.sort.presenter.FenLePresenter;
import okhttp3.logging.HttpLoggingInterceptor;
import q.rorbin.verticaltablayout.VerticalTabLayout;
import q.rorbin.verticaltablayout.adapter.TabAdapter;
import q.rorbin.verticaltablayout.widget.TabView;

/**
 * A simple {@link Fragment} subclass.
 */
public class Fragment_Sort extends Fragment implements FenLeContract.View{
    @BindView(R.id.home_recy)
    RecyclerView homeRecy;
    @BindView(R.id.home_title)
    TextView homeTitle;
    @BindView(R.id.home_verticaltab)
    VerticalTabLayout homeVerticaltab;
    Unbinder unbinder;
    private FenLePresenter fenLePresenter;
    private FenleiRightAdapter mainRightAdapter;


    public Fragment_Sort() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_fragment__sort, container, false);
        unbinder = ButterKnife.bind(this, view);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        fenLePresenter = new FenLePresenter(this);
        fenLePresenter.GetCatagoryhttp();
        LinearLayoutManager manager = new LinearLayoutManager(getActivity());
        manager.setOrientation(LinearLayoutManager.VERTICAL);
        homeRecy.setLayoutManager(manager);
    }


    @Override
    public void GetCatagoryBean(SortBean catagoryBean) {
        List<SortBean.DataBean> data = catagoryBean.getData();
      //  Logger.e(catagoryBean.toString());
        TabAdapter tabAdapter = new MyTabAdapter(data);
        ((MyTabAdapter) tabAdapter).setCid(new MyTabAdapter.getCid() {
            @Override
            public void getCid(String cid) {
                int i = Integer.parseInt(cid);
                fenLePresenter.GetProductCatagoryhttp(i);
            }
        });
        homeVerticaltab.setTabAdapter(tabAdapter);
        homeVerticaltab.addOnTabSelectedListener(new VerticalTabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabView tab, int position) {
                if (position >6){
                    Toast.makeText(getActivity(),"此条目无数据",Toast.LENGTH_SHORT).show();
                }else {
                    homeRecy.scrollToPosition(position);
                }

            }

            @Override
            public void onTabReselected(TabView tab, int position) {

            }
        });

    }

    @Override
    public void GetProductCatagoryBean(ProductCatagoryBean productCatagoryBean) {

        List<ProductCatagoryBean.DataBean> data = productCatagoryBean.getData();
        HttpLoggingInterceptor.Logger.DEFAULT.log(productCatagoryBean.toString());
        if (data.size() <= 0) {
          //  Toast.makeText(getActivity(),"此条目无数据",Toast.LENGTH_SHORT).show();

        }else {
           // Logger.e(productCatagoryBean.toString());
            if (mainRightAdapter == null){
                mainRightAdapter = new FenleiRightAdapter(data, getActivity());
                homeRecy.setAdapter(mainRightAdapter);
            }else {
                mainRightAdapter.AddList(data);
            }

        }

    }
}


adapter 适配器

MyTabAdapter

package myjd.jd.com.imitate2jd.view.frag.sort.adapter;

import java.util.List;

import myjd.jd.com.imitate2jd.bean.SortBean;
import q.rorbin.verticaltablayout.widget.ITabView;

public class MyTabAdapter implements q.rorbin.verticaltablayout.adapter.TabAdapter {
    private List<SortBean.DataBean> list;
    private getCid cid;

    public void setCid(getCid cid) {
        this.cid = cid;
    }

    public MyTabAdapter(List<SortBean.DataBean> list) {
        this.list = list;
    }

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

    @Override
    public ITabView.TabBadge getBadge(int position) {
        return null;
    }

    @Override
    public ITabView.TabIcon getIcon(int position) {
        return null;
    }

    @Override
    public ITabView.TabTitle getTitle(int position) {
        ITabView.TabTitle build = new ITabView.TabTitle.Builder()
                .setContent(list.get(position).getName())
                .build();
        cid.getCid(list.get(position).getCid() + "");

        return build;
    }

    @Override
    public int getBackground(int position) {
        return 0;
    }

    public interface getCid {
        void getCid(String cid);
    }
}

 FenleiRightAdapter

package myjd.jd.com.imitate2jd.view.frag.sort.adapter;

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

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import myjd.jd.com.imitate2jd.R;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.customview.MyRecycle;

public class FenleiRightAdapter extends RecyclerView.Adapter{
    private List<ProductCatagoryBean.DataBean> data;
    private Context context;

    public FenleiRightAdapter(List<ProductCatagoryBean.DataBean> data, Context context) {
        this.data = data;
        this.context = context;
    }
    public void AddList(List<ProductCatagoryBean.DataBean> li){
        data.addAll(li);
        notifyDataSetChanged();
    }
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.fenlei_recy_item, parent, false);
        ViewHolder viewHolder = new ViewHolder(inflate);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof ViewHolder) {
            ProductCatagoryBean.DataBean dataBean = data.get(position);
            String name = dataBean.getName();
            List<ProductCatagoryBean.DataBean.ListBean> list = dataBean.getList();
            ((ViewHolder) holder).mainRecyItemTite.setText(name);

            GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 3);
            ((ViewHolder) holder).mainRecyItemRecy.setLayoutManager(gridLayoutManager);
            FenleiRight_itemAdapter mainRight_itemAdapter = new FenleiRight_itemAdapter(list, context);
            ((ViewHolder) holder).mainRecyItemRecy.setAdapter(mainRight_itemAdapter);
        }
    }

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

    static class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.main_recy_item_recy)
        MyRecycle mainRecyItemRecy;
        @BindView(R.id.main_recy_item_tite)
        TextView mainRecyItemTite;

        ViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }
}

 

 FenleiRight_itemAdapter

 

package myjd.jd.com.imitate2jd.view.frag.sort.adapter;

import android.content.Context;
import android.content.Intent;
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.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import org.greenrobot.eventbus.EventBus;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import myjd.jd.com.imitate2jd.R;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.view.frag.sort.view.GoodsActivity;

public class FenleiRight_itemAdapter extends RecyclerView.Adapter {
    private List<ProductCatagoryBean.DataBean.ListBean> list;
    private Context context;

    public FenleiRight_itemAdapter(List<ProductCatagoryBean.DataBean.ListBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.fenlei_recy_item_recy, parent, false);
        ViewHolder viewHolder = new ViewHolder(inflate);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
        if (holder instanceof ViewHolder) {
            ((ViewHolder) holder).mainRecyItemRecyTitle.setText(list.get(position).getName());
            ((ViewHolder) holder).mainRecyItemRecyImg.setImageURI(list.get(position).getIcon());
            ((ViewHolder) holder).view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                 //   String pscid = list.get(position).getPscid();
                   // EventBus.getDefault().postSticky(pscid);
                    Intent intent = new Intent(context, GoodsActivity.class);
                    context.startActivity(intent);
                }
            });
        }
    }

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

    static class ViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.main_recy_item_recy_img)
        SimpleDraweeView mainRecyItemRecyImg;
        @BindView(R.id.main_recy_item_recy_title)
        TextView mainRecyItemRecyTitle;
        View view;

        ViewHolder(View view) {
            super(view);
            this.view = view;
            ButterKnife.bind(this, view);
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值