通过接口加入购物车长按点击条目跳转到购物车页面

详情可见

https://github.com/YangJun1208/yuekaozonghe

在这里插入图片描述

展示页面的Activity

public class ThreeActivity extends AppCompatActivity implements IView {

private XRecyclerView recyclerView;
private IPersenterImpl iPersenter;
private int mPage;
private TitleAdapter adapter;

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

    recyclerView=findViewById(R.id.recycle_three);
    iPersenter=new IPersenterImpl(this);

    final LinearLayoutManager manager = new LinearLayoutManager(this);
    manager.setOrientation(OrientationHelper.VERTICAL);
    recyclerView.setLayoutManager(manager);

    adapter = new TitleAdapter(this);
    recyclerView.setAdapter(adapter);

    adapter.setOnClicksListener(new TitleAdapter.OnClicksListener() {
        @Override
        public void onSuccess(int i, int pid) {
            loaData(pid);
        }
    });
    adapter.setOnClickLongLisenter(new TitleAdapter.OnClickLongLisenter() {
        @Override
        public void onSuccess(int i, int pid) {
            Intent intent = new Intent(ThreeActivity.this, FourActivity.class);
            startActivity(intent);
        }
    });

    recyclerView.setLoadingMoreEnabled(true);
    recyclerView.setPullRefreshEnabled(true);
    recyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
        @Override
        public void onRefresh() {
            mPage=1;
            loadData();
        }

        @Override
        public void onLoadMore() {
            mPage++;
            loadData();
        }
    });
    loadData();

}

private void loaData(int pid) {
    Map<String,String> map=new HashMap<>();
    map.put("pid",pid+"");
    map.put("uid","23015");
    iPersenter.getRequest(Apis.TYPE_JIARU,map,JiaRuBean.class);
}

private void loadData() {
    Map<String,String> map=new HashMap<>();
    map.put("keywords","手机");
    map.put("page",mPage+"");
    iPersenter.getRequest(Apis.TYPE_TITLE,map,TitleBean.class);
}

@Override
public void onSucces(Object data) {
    if(data instanceof TitleBean){
        TitleBean titleBean= (TitleBean) data;
        if(mPage==1){
            adapter.setDatas(titleBean.getData());
        }else{
            adapter.addDatas(titleBean.getData());
        }
    }else if(data instanceof JiaRuBean){
        JiaRuBean jiaRuBean= (JiaRuBean) data;
        Toast.makeText(this, jiaRuBean.getMsg()+"", Toast.LENGTH_SHORT).show();
    }
    recyclerView.loadMoreComplete();
    recyclerView.refreshComplete();
}

展示页面的Adapter

public class TitleAdapter extends RecyclerView.Adapter<TitleAdapter.ViewHolder> {

private List<TitleBean.DataBean> data;
private Context context;

public TitleAdapter(Context context) {
    this.context = context;
    data=new ArrayList<>();
}

public void setDatas(List<TitleBean.DataBean> mData) {
    //this.data = data;
    data.clear();
    data.addAll(mData);
    notifyDataSetChanged();
}

public void addDatas(List<TitleBean.DataBean> mData) {
    //this.data = data;
    //data.clear();
    data.addAll(mData);
    notifyDataSetChanged();
}

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

@Override
public void onBindViewHolder(@NonNull TitleAdapter.ViewHolder viewHolder, final int i) {
    viewHolder.text_title.setText(data.get(i).getTitle());
    viewHolder.text_price.setText(data.get(i).getPrice()+"");
    String s = data.get(i).getImages().split("\\|")[0].replace("https", "http");
    Glide.with(context).load(s).into(viewHolder.imageView);
    //点击加入购物车的按钮将pid回传给Activity
    viewHolder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(onClicksListener!=null){
                onClicksListener.onSuccess(i,data.get(i).getPid());
            }
        }
        });
//点击跳转到购物车的页面
        viewHolder.jiaru_item.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                if(onClickLongLisenter!=null){
                    onClickLongLisenter.onSuccess(i,data.get(i).getPid());
                }
                return false;
            }
        });

}



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

public class ViewHolder extends RecyclerView.ViewHolder {
    private ImageView imageView;
    private TextView text_title,text_price;
    private ConstraintLayout jiaru_item;
    private Button button;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        imageView=itemView.findViewById(R.id.three_image);
        text_price=itemView.findViewById(R.id.three_price);
        text_title=itemView.findViewById(R.id.three_title);
        jiaru_item=itemView.findViewById(R.id.jiaru_item);
        button=itemView.findViewById(R.id.button_three);
    }
}

OnClicksListener onClicksListener;

OnClickLongLisenter onClickLongLisenter;

public void setOnClicksListener(OnClicksListener onClicksListener){
    this.onClicksListener=onClicksListener;
}

public interface OnClicksListener {
    void onSuccess(int i,int pid);
}

public void setOnClickLongLisenter(OnClickLongLisenter onClickLongLisenter){
    this.onClickLongLisenter=onClickLongLisenter;
}

public interface OnClickLongLisenter {
    void onSuccess(int i,int pid);
}

跳转到另一个Activity,进入之后复选框全选的状态

public class FourActivity extends AppCompatActivity implements IView,View.OnClickListener {

private RecyclerView recyclerView;
private CheckBox gouwuche_checkbox;
private TextView num_sum;
private TextView sum_price;
private ShopAdapter adapter;
private IPersenterImpl iPersenter;
private List<ZhanShiBean.DataBean> data1;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_four);
    recyclerView=findViewById(R.id.gouwuche_recycle);
    gouwuche_checkbox=findViewById(R.id.gouwuche_checkbox);
    num_sum=findViewById(R.id.num_sum);
    sum_price=findViewById(R.id.sum_price);
    iPersenter=new IPersenterImpl(this);

    gouwuche_checkbox.setOnClickListener(this);
    final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
    recyclerView.setLayoutManager(linearLayoutManager);

    adapter = new ShopAdapter(this);
    recyclerView.setAdapter(adapter);

    adapter.setOnClickListener(new ShopAdapter.OnsClickListener() {

        @Override
        public void CallBack(List<ZhanShiBean.DataBean> list) {
            int num=0;
            double price=0;
            int numSum=0;
            for (int i=0;i<list.size();i++) {
                List<ZhanShiBean.DataBean.ListBean> listBeans = list.get(i).getList();
                for (int a=0;a<listBeans.size();a++){
                    numSum+= listBeans.get(a).getNum();
                    if(listBeans.get(a).isCheck()){
                        num+=listBeans.get(a).getNum();
                        price+=listBeans.get(a).getPrice()*listBeans.get(a).getNum();
                    }
                }
            }
            if(num<numSum){
                gouwuche_checkbox.setChecked(false);
            }else{
                gouwuche_checkbox.setChecked(true);
            }
            sum_price.setText("总价为:"+price);
            num_sum.setText("数量为:"+num);
        }

    });
    loadData();
}


private void loadData() {
    Map<String,String> map=new HashMap<>();
    map.put("uid","23015");
    iPersenter.getRequest(Apis.TYPE_ZHAN,map,ZhanShiBean.class);
}

@Override
public void onSucces(Object data) {
    if(data instanceof ZhanShiBean){
        ZhanShiBean zhanShiBean= (ZhanShiBean) data;
        data1 = zhanShiBean.getData();
        if(data1 !=null){
            adapter.setDatas(zhanShiBean.getData());
        }
        sellSum(true);
        gouwuche_checkbox.setChecked(true);

    }
}


@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.gouwuche_checkbox:
            sellSum(gouwuche_checkbox.isChecked());
            adapter.notifyDataSetChanged();
            break;
            default:
                break;
    }
}

private void sellSum(boolean checked) {
    int price=0;
    int num=0;
    for (int a=0;a<data1.size();a++){
        ZhanShiBean.DataBean bean = data1.get(a);
        bean.setIscheck(checked);
        List<ZhanShiBean.DataBean.ListBean> list = data1.get(a).getList();
        for (int i=0;i<list.size();i++){
            list.get(i).setCheck(checked);
            num+=list.get(i).getNum();
            price+=list.get(i).getPrice()*list.get(i).getNum();
        }
    }
    if(checked){
        sum_price.setText("总价为:"+price);
        num_sum.setText("数量为:"+num);
    }else{
        sum_price.setText("总价为:"+0.0);
        num_sum.setText("数量为:"+0);
    }
}

猜你喜欢

转载自blog.csdn.net/yjjhtl/article/details/85157668