分类

//九宫格,分类
public static final String WANG_STRING = "https://www.zhaoapi.cn/product/getCatagory";
public static final String WANG_BASE = "https://www.zhaoapi.cn/";

//子分类
public static final String ZI_STRINIG = "https://www.zhaoapi.cn/product/getProductCatagory";
public static final String ZI_BASE = "https://www.zhaoapi.cn/";
//九宫格
@GET("product/getCatagory")
io.reactivex.Observable<WangBean> getWang(@Query("wang")String wang);

//子条目
@GET("product/getProductCatagory")
io.reactivex.Observable<ZiBean> getZi(@Query("cid")int cid);
public interface FenLeiIConter {

    public interface FenLeiIView{

        void fenleiShowData(WangBean wangBean);

        void fenliZiData(ZiBean ziBean);

        void OnError(Throwable responseString);

    }

    public interface FenLeiPresenter<FenLeiIView>{

        void attachView(FenLeiIView fenLeiIView);

        void datachView(FenLeiIView fenLeiIView);

        void fenleiShowRequestData();

        void fenleiZiRequestData(int cid);
    }

    public interface FenLeiModel{

        public interface FenLeiListenter{

            void FenLeiBack(WangBean wangBean);

            void onFailer(Throwable throwable);

        }

        public interface FenLeiZiListenter{

            void FenLeiZiBack(ZiBean ziBean);

        }

        void fenleiShowResponse(FenLeiListenter fenLeiListenter);

        void fenleiZiResponse(int cid,FenLeiZiListenter fenLeiZiListenter);
    }

}

 

public class FenLeiModel implements FenLeiIConter.FenLeiModel {
    @Override
    public void fenleiShowResponse(final FenLeiListenter fenLeiListenter) {

        Observable<WangBean> observable = Retrofitutil.getinstance().apiService(Contast.WANG_BASE).getWang("");
        observable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<WangBean>() {
                    @Override
                    public void accept(WangBean wangBean) throws Exception {

                        fenLeiListenter.FenLeiBack(wangBean);

                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {

                        fenLeiListenter.onFailer(throwable);

                    }
                });
    }

    @SuppressLint("CheckResult")
    @Override
    public void fenleiZiResponse(int cid,final FenLeiZiListenter fenLeiZiListenter) {
        Observable<ZiBean> observable = Retrofitutil.getinstance().apiService(Contast.ZI_BASE).getZi(cid);
        observable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<ZiBean>() {
                    @Override
                    public void accept(ZiBean ziBean) throws Exception {

                        fenLeiZiListenter.FenLeiZiBack(ziBean);

                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        String message = throwable.getMessage();
                        Log.i("xxxx",message);
                    }
                });
    }
}
public class FenLeiPresenter implements FenLeiIConter.FenLeiPresenter<FenLeiIConter.FenLeiIView> {

    FenLeiIConter.FenLeiIView fenLeiIView;
    private FenLeiModel fenLeiModel;
    private WeakReference<FenLeiIConter.FenLeiIView> fenLeiIViewWeakReference;
    private WeakReference<FenLeiModel> fenLeiModelWeakReference;

    @Override
    public void attachView(FenLeiIConter.FenLeiIView fenLeiIView) {

        this.fenLeiIView = fenLeiIView;
        fenLeiModel = new FenLeiModel();
        fenLeiIViewWeakReference = new WeakReference<>(fenLeiIView);
        fenLeiModelWeakReference = new WeakReference<>(fenLeiModel);
    }

    @Override
    public void datachView(FenLeiIConter.FenLeiIView fenLeiIView) {

        fenLeiIViewWeakReference.clear();
        fenLeiModelWeakReference.clear();
    }

    @Override
    public void fenleiShowRequestData() {

        fenLeiModel.fenleiShowResponse(new FenLeiIConter.FenLeiModel.FenLeiListenter() {
            @Override
            public void FenLeiBack(WangBean wangBean) {
                fenLeiIView.fenleiShowData(wangBean);
            }

            @Override
            public void onFailer(Throwable throwable) {

                fenLeiIView.OnError(throwable);

            }
        });

    }

    @Override
    public void fenleiZiRequestData(int cid) {

        fenLeiModel.fenleiZiResponse(cid,new FenLeiIConter.FenLeiModel.FenLeiZiListenter() {
            @Override
            public void FenLeiZiBack(ZiBean ziBean) {
                fenLeiIView.fenliZiData(ziBean);
            }
        });

    }
}
public class Fragment_two extends Fragment implements FenLeiIConter.FenLeiIView {

    @BindView(R.id.recyc_left)
    RecyclerView recycLeft;
    @BindView(R.id.recyc_right)
    RecyclerView recycRight;
    Unbinder unbinder;
    private FenLeiIConter.FenLeiPresenter fenLeiPresenter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_two, container, false);
        unbinder = ButterKnife.bind(this, view);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        fenLeiPresenter = new FenLeiPresenter();
        fenLeiPresenter.attachView(this);
        fenLeiPresenter.fenleiShowRequestData();
        fenLeiPresenter.fenleiZiRequestData(1);
    }

    //左recycview
    @Override
    public void fenleiShowData(final WangBean wangBean) {

        List<WangBean.DataBean> list = new ArrayList<>();
        list.addAll(wangBean.getData());
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
        FenleiAdapter fenleiAdapter = new FenleiAdapter(getContext(),list);
        recycLeft.setNestedScrollingEnabled(false);

        //分割线
        DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(getContext(),LinearLayoutManager.VERTICAL);
        recycLeft.addItemDecoration(dividerItemDecoration);

        recycLeft.setLayoutManager(linearLayoutManager);
        recycLeft.setAdapter(fenleiAdapter);
        fenleiAdapter.setOnItemClickListener(new FenleiAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                int cid = wangBean.getData().get(position).getCid();
                fenLeiPresenter.fenleiZiRequestData(cid);
            }
        });
    }

    //右recycview
    @Override
    public void fenliZiData(final ZiBean ziBean) {
        List<ZiBean.DataBean> list = new ArrayList<>();
        list.addAll(ziBean.getData());
        GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2);
        FenLei_item_Adapter adapter = new FenLei_item_Adapter(getContext(),list);
        recycRight.setNestedScrollingEnabled(false);
        recycRight.setLayoutManager(gridLayoutManager);
        recycRight.setAdapter(adapter);
        adapter.setOnItemClickLisentener(new FenLei_item_Adapter.onItemClickLisentener() {
            @Override
            public void onItemClick(int position) {

                Intent intent = new Intent(getActivity(), SouSuoActivity.class);
                String shangpinName = ziBean.getData().get(position).getList().get(position).getName();
                intent.putExtra("shangpinName",shangpinName);
                startActivity(intent);
            }
        });

    }

    @Override
    public void OnError(Throwable responseString) {

        Toast.makeText(getContext(),responseString+"",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
        fenLeiPresenter.datachView(this);
    }
}
分类的Adapter
public class FenleiAdapter extends RecyclerView.Adapter<FenleiAdapter.FenleiViewHolder> {

    Context context;
    List<WangBean.DataBean> list;
    private OnItemClickListener mOnItemClickListener;

    public FenleiAdapter(Context context, List<WangBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    public interface OnItemClickListener{
        void onItemClick(View view, int position);
    }
    public void setOnItemClickListener(OnItemClickListener mOnItemClickListener){
        this.mOnItemClickListener = mOnItemClickListener;
    }

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

    @Override
    public void onBindViewHolder(@NonNull final FenleiViewHolder fenleiViewHolder, int i) {
        fenleiViewHolder.text_fenlei.setText(list.get(i).getName());
        if(mOnItemClickListener!=null){
            fenleiViewHolder.text_fenlei.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int position = fenleiViewHolder.getLayoutPosition();
                    mOnItemClickListener.onItemClick(fenleiViewHolder.itemView,position);
                }
            });
        }
    }

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

    static class FenleiViewHolder extends RecyclerView.ViewHolder{

        private final TextView text_fenlei;

        public FenleiViewHolder(@NonNull View itemView) {
            super(itemView);
            text_fenlei = itemView.findViewById(R.id.text_fenlei);
        }
    }

}
子条目的adapter
public class FenLei_item_Adapter extends RecyclerView.Adapter<FenLei_item_Adapter.FenleiitemViewHolder> {

    Context context;
    List<ZiBean.DataBean> list;

    public FenLei_item_Adapter(Context context, List<ZiBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    onItemClickLisentener onItemClickLisentener;

    public void setOnItemClickLisentener(onItemClickLisentener onItemClickLisentener) {
        this.onItemClickLisentener = onItemClickLisentener;
    }

    //声明借口对象
    public interface  onItemClickLisentener{
        //声明条目点击方法
        void onItemClick(int position);

    }

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

    @Override
    public void onBindViewHolder(@NonNull FenleiitemViewHolder fenleiitemViewHolder, int i) {

        String images = list.get(i).getList().get(i).getIcon();
        if(images.contains("|")){

            String s = images.substring(0, images.indexOf("|"));
            Uri uri = Uri.parse(s);
            fenleiitemViewHolder.sim_item_image.setImageURI(s);

        }else{
            Uri uri = Uri.parse(images);
            fenleiitemViewHolder.sim_item_image.setImageURI(uri);
        }

        fenleiitemViewHolder.text_item_view.setText(list.get(i).getList().get(i).getName());


    }

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

    class FenleiitemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private final SimpleDraweeView sim_item_image;
        private final TextView text_item_view;

        public FenleiitemViewHolder(@NonNull View itemView) {
            super(itemView);
            sim_item_image = itemView.findViewById(R.id.sim_item_image);
            text_item_view = itemView.findViewById(R.id.text_item_view);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {

            int position = getLayoutPosition();
            onItemClickLisentener.onItemClick(position);

        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值