android分类联动效果,android 分类联动效果 模仿每日优鲜

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());

}

private void getleft(String cid) {

HashMap parmas = new HashMap<>();

parmas.put("cid",cid);

clsPresenter.getRightList(parmas);

}

@Override

public void leftSuccess(List leftClsBeanList) {

if (leftAdapter==null){

leftAdapter = new LeftAdapter(leftClsBeanList,getActivity());

rv_left.setAdapter(leftAdapter);

leftAdapter.setItemClickListener(this);

}else {

leftAdapter.notifyDataSetChanged();

}

}

@Override

public void rightSuccess(List 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 params);

public abstract void getRightList(HashMap params);

}

public interface IClsModel{

void getLeftList(HashMap params, ClsModel.ClsModelCallback clsModelCallback);

void getRightList(HashMap params, ClsModel.ClsModelCallback clsModelCallback);

}

public interface IclsView{

void leftSuccess(List leftClsBeanList);

void rightSuccess(List 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 params) {

clsModel.getLeftList(params, new ClsModel.ClsModelCallback() {

@Override

public void leftsuccess(String result) {

LeftClsBean leftClsBean = new Gson().fromJson(result,LeftClsBean.class);

List data = leftClsBean.data;

iclsView.leftSuccess(data);

}

});

}

@Override

public void getRightList(HashMap 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 data = rightClsBean.data;

iclsView.rightSuccess(data);

}

});

}

}

public class ClsModel implements ClsContract.IClsModel {

@Override

public void getLeftList(HashMap 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 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{

private List list;

private Context context;

public LeftAdapter(List 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{

private List list;

private Context context;

public RightAdapter(List 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 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{

private Context context;

private List listBeans;

public RightItemAdapter(Context context, List 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);

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值