电商维度 分类demo

public class ClsFragment extends Fragment implements ClsContract.IclsView,LeftAdapter.ItemClickListener{
    private RecyclerView rv_left;
    private RecyclerView rv_right;
    private ClsPresenter clsPresenter;
    private LeftAdapter leftAdapter;
    private RightAdapter rightAdapter;
    private String cid = "1";
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_cls, container, false);
    }
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        rv_left = view.findViewById(R.id.rv_left);
        rv_right = view.findViewById(R.id.rv_right);
        initData();
    }
    private void initData() {
        rv_left.setLayoutManager(new LinearLayoutManager(getActivity()));
        rv_right.setLayoutManager(new LinearLayoutManager(getActivity()));
        clsPresenter = new ClsPresenter(this);
        getleft(cid);
        clsPresenter.getLeftList(new HashMap<String, String>());
    }

    private void getleft(String cid) {
        HashMap<String,String> parmas = new HashMap<>();
        parmas.put("cid",cid);
        clsPresenter.getRightList(parmas);
    }

    @Override
    public void leftSuccess(List<LeftClsBean.Cls> leftClsBeanList) {
        if (leftAdapter==null){
            leftAdapter = new LeftAdapter(leftClsBeanList,getActivity());
            rv_left.setAdapter(leftAdapter);
            leftAdapter.setItemClickListener(this);
        }else {
            leftAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public void rightSuccess(List<RightClsBean.DataBean> rightClsBeanList) {
        rightAdapter = new RightAdapter(rightClsBeanList,getActivity());
        rv_right.setAdapter(rightAdapter);
    }

    @Override
    public void leftfailure(String error) 
    }
    @Override
    public void rightfailure(String error) {
    }
    @Override
    public void click(String cid) {
        getleft(cid);
    }
}


public interface ClsContract {

    public abstract class ClsPresenters{
        public abstract void getLeftList(HashMap<String,String> params);
        public abstract void getRightList(HashMap<String,String> params);
    }

    public interface IClsModel{
        void getLeftList(HashMap<String,String> params, ClsModel.ClsModelCallback clsModelCallback);
        void getRightList(HashMap<String,String> params, ClsModel.ClsModelCallback clsModelCallback);
    }

    public interface IclsView{
        void leftSuccess(List<LeftClsBean.Cls> leftClsBeanList);
        void rightSuccess(List<RightClsBean.DataBean> rightClsBeanList);
        void leftfailure(String error);
        void rightfailure(String error);
    }
}





public class ClsPresenter extends ClsContract.ClsPresenters {

    private ClsModel clsModel;
    private ClsContract.IclsView iclsView;

    public ClsPresenter(ClsContract.IclsView iclsView) {
        this.iclsView = iclsView;
        this.clsModel = new ClsModel();
    }

    @Override
    public void getLeftList(HashMap<String, String> params) {
        clsModel.getLeftList(params, new ClsModel.ClsModelCallback() {
            @Override
            public void leftsuccess(String result) {
                LeftClsBean leftClsBean = new Gson().fromJson(result,LeftClsBean.class);
                List<LeftClsBean.Cls> data = leftClsBean.data;
                iclsView.leftSuccess(data);
            }
        });
    }

    @Override
    public void getRightList(HashMap<String, String> params) {
        clsModel.getRightList(params, new ClsModel.ClsModelCallback() {
            @Override
            public void leftsuccess(String result) {

            }

            @Override
            public void rightsuccess(String result) {
                RightClsBean rightClsBean = new Gson().fromJson(result,RightClsBean.class);
                List<RightClsBean.DataBean> data = rightClsBean.data;
                iclsView.rightSuccess(data);
            }
        });
    }
}




public class ClsModel implements ClsContract.IClsModel {


    @Override
    public void getLeftList(HashMap<String, String> params, final ClsModelCallback clsModelCallback) {
        OkhttpUtils.getInstance().doPost(ClsApi.LEFT_API, params, new OkHttpCallback() {
            @Override
            public void Success(String result) {
                if (clsModelCallback!=null){
                    clsModelCallback.leftsuccess(result);
                }
            }

            @Override
            public void Failure(String msg) {
                if (clsModelCallback!=null){
                    clsModelCallback.leftfailure(msg);
                }
            }
        });
    }

    @Override
    public void getRightList(HashMap<String, String> params, final ClsModelCallback clsModelCallback) {
        OkhttpUtils.getInstance().doPost(ClsApi.RIGHT_API, params, new OkHttpCallback() {
            @Override
            public void Success(String result) {
                if (clsModelCallback!=null){
                    clsModelCallback.rightsuccess(result);
                }
            }

            @Override
            public void Failure(String msg) {
                if (clsModelCallback!=null){
                    clsModelCallback.rightfailure(msg);
                }
            }
        });
    }

    public interface ClsModelCallback{
        void leftsuccess(String result);
        void rightsuccess(String result);
        void leftfailure(String error);
        void rightfailure(String error);
    }


}

public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.leftViewHolder>{
    private List<LeftClsBean.Cls> list;
    private Context context;
    public LeftAdapter(List<LeftClsBean.Cls> list, Context context) {
        this.list = list;
        this.context = context;
    }
    @NonNull
    @Override
    public leftViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.left_layout_item,viewGroup,false);
        leftViewHolder leftViewHolder = new leftViewHolder(view);
        return leftViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull leftViewHolder leftViewHolder, int i) {
        final LeftClsBean.Cls cls = list.get(i);
        leftViewHolder.tv_name.setText(cls.name);
        leftViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (itemClickListener!=null){
                    itemClickListener.click(cls.cid);
                }
            }
        });
    }

    @Override
    public int getItemCount() {
        return list==null?0:list.size();
    }

    class leftViewHolder extends RecyclerView.ViewHolder {

        private final TextView tv_name;

        public leftViewHolder(@NonNull View itemView) {
            super(itemView);
            tv_name = itemView.findViewById(R.id.tv_name);
        }
    }
    private ItemClickListener itemClickListener;
    public void setItemClickListener(ItemClickListener itemClickListener){
        this.itemClickListener = itemClickListener;
    }
    public interface ItemClickListener{
        void click(String cid);
    }
}
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.rightViewHodler>{
    private List<RightClsBean.DataBean> list;
    private Context context;
    public RightAdapter(List<RightClsBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

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

    @Override
    public void onBindViewHolder(@NonNull rightViewHodler rightViewHodler, int i) {
        RightClsBean.DataBean dataBean = list.get(i);
        List<RightClsBean.DataBean.ListBean> list = dataBean.list;
        rightViewHodler.tv_name.setText(dataBean.name);
        rightViewHodler.recyclerView.setLayoutManager(new GridLayoutManager(context,3));
        rightViewHodler.recyclerView.setAdapter(new RightItemAdapter(context,list));
    }
    @Override
    public int getItemCount() {
        return list==null?0:list.size();
    }
    class rightViewHodler extends RecyclerView.ViewHolder{
        private final TextView tv_name;
        private final RecyclerView recyclerView;
        public rightViewHodler(@NonNull View itemView) {
            super(itemView);
            tv_name = itemView.findViewById(R.id.tv_name);
            recyclerView = itemView.findViewById(R.id.rv);
        }
    }
}
public class RightItemAdapter extends RecyclerView.Adapter<RightItemAdapter.rightitemViewHolder>{
    private Context context;
    private List<RightClsBean.DataBean.ListBean> listBeans;
    public RightItemAdapter(Context context, List<RightClsBean.DataBean.ListBean> listBeans) {
        this.context = context;
        this.listBeans = listBeans;
    }
    @NonNull
    @Override
    public rightitemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.rightitem_layout_item,viewGroup,false);
        rightitemViewHolder rightitemViewHolder = new rightitemViewHolder(view);
        return rightitemViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull rightitemViewHolder rightitemViewHolder, int i) {
        RightClsBean.DataBean.ListBean listBean = listBeans.get(i);
        rightitemViewHolder.tv_name.setText(listBean.name);
        Glide.with(context).load(listBean.icon).into(rightitemViewHolder.imageView);
    }

    @Override
    public int getItemCount() {
        return listBeans==null?0:listBeans.size();
    }

    class rightitemViewHolder extends RecyclerView.ViewHolder {
        private final TextView tv_name;
        private final ImageView imageView;
        public rightitemViewHolder(@NonNull View itemView) {
            super(itemView);
            tv_name = itemView.findViewById(R.id.tv_name);
            imageView = itemView.findViewById(R.id.iv);
        }
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_43299230/article/details/85949991
今日推荐