自定义加减控件
package com.example.lenovo.zhuhuohuo.customview;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lenovo.zhuhuohuo.R;
import com.example.lenovo.zhuhuohuo.bean.ShoppingCartBean;
import com.example.lenovo.zhuhuohuo.shoppingcarAdapter.ShoopingCartAdapter;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class CustomViewAddMinus extends LinearLayout {
@BindView(R.id.add_tv)
TextView addTv;
@BindView(R.id.num_tv)
TextView numTv;
@BindView(R.id.minus_tv)
TextView minusTv;
private int count;
private List<ShoppingCartBean.ResultBean> mList;
private ShoopingCartAdapter shoopingCartAdapter;
private int i;
public CustomViewAddMinus(Context context, AttributeSet attrs) {
super(context, attrs);
View view = LayoutInflater.from(context).inflate(R.layout.add_minus_item, this);
ButterKnife.bind(this, view);
}
public void setNumber(int number) {
this.count = number;
numTv.setText(count + "");
}
@OnClick({R.id.add_tv, R.id.minus_tv})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.add_tv:
count++;
numTv.setText(count + "");
if(changeCount!=null){
changeCount.setCount(count);
}
break;
case R.id.minus_tv:
if (count <= 1) {
Toast.makeText(getContext(), "不能再减了!", Toast.LENGTH_SHORT).show();
} else {
count--;
numTv.setText(count + "");
if(changeCount!=null){
changeCount.setCount(count);
}
}
break;
}
}
public interface ChangeCount{
void setCount(int count);
}
private ChangeCount changeCount;
public void setChangeCount(ChangeCount changeCount) {
this.changeCount = changeCount;
}
}
购物车页面
package com.example.lenovo.zhuhuohuo.mainFragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lenovo.zhuhuohuo.R;
import com.example.lenovo.zhuhuohuo.api.Apis;
import com.example.lenovo.zhuhuohuo.base.LazyLoadingFragment;
import com.example.lenovo.zhuhuohuo.bean.ShoppingCartBean;
import com.example.lenovo.zhuhuohuo.mvp.Contract;
import com.example.lenovo.zhuhuohuo.mvp.PresenterImpl;
import com.example.lenovo.zhuhuohuo.shoppingcarAdapter.ShoopingCartAdapter;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
/**
* A simple {@link Fragment} subclass.
*/
public class ShoppingCarFragment extends LazyLoadingFragment implements Contract.IView {
@BindView(R.id.shoppingcar_list)
RecyclerView shoppingcarList;
Unbinder unbinder;
@BindView(R.id.all_check)
CheckBox allCheck;
@BindView(R.id.all_price)
TextView allPrice;
@BindView(R.id.over_btn)
Button overBtn;
private PresenterImpl presenter;
private ShoopingCartAdapter shoopingCartAdapter;
private List<ShoppingCartBean.ResultBean> result;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_shopping_car, null);
unbinder = ButterKnife.bind(this, v);
return v;
}
@Override
public void success(Object data) {
if (data instanceof ShoppingCartBean) {
ShoppingCartBean shoppingCartBean = (ShoppingCartBean) data;
result = shoppingCartBean.getResult();
if (shoppingCartBean.getMessage().equals("查询成功")) {
shoopingCartAdapter.setmList(result);
} else {
Toast.makeText(getActivity(), "请先登录", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void failure(Object error) {
Log.e("error", error.toString());
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@Override
protected void loadData() {
presenter = new PresenterImpl(this);
shoopingCartAdapter = new ShoopingCartAdapter(getActivity());
shoppingcarList.setLayoutManager(new LinearLayoutManager(getActivity()));
shoppingcarList.setAdapter(shoopingCartAdapter);
presenter.onGetRequest(Apis.QUERY_SHOPPINGCART_URL, null, ShoppingCartBean.class);
shoopingCartAdapter.setShopCarListener(new ShoopingCartAdapter.ShopCarListener() {
@Override
public void onClick(List<ShoppingCartBean.ResultBean> mList) {
setPrice();
}
@Override
public void setNums(int i, int count) {
shoopingCartAdapter.setGoodsNumber(i, count);
shoopingCartAdapter.notifyDataSetChanged();
setPrice();
}
});
}
@OnClick({R.id.all_check, R.id.all_price})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.all_check:
for (int i = 0; i < result.size(); i++) {
result.get(i).setChecked(allCheck.isChecked());
}
shoopingCartAdapter.setmList(result);
break;
case R.id.over_btn:
break;
}
}
private void setPrice() {
int totalMoney = 0;
for (int i = 0; i < result.size(); i++) {
if (result.get(i).isChecked()) {
totalMoney += result.get(i).getCount() * result.get(i).getPrice();
}
}
allPrice.setText("¥" + totalMoney + "");
}
}
购物车适配器
package com.example.lenovo.zhuhuohuo.shoppingcarAdapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.example.lenovo.zhuhuohuo.R;
import com.example.lenovo.zhuhuohuo.bean.ShoppingCartBean;
import com.example.lenovo.zhuhuohuo.customview.CustomViewAddMinus;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class ShoopingCartAdapter extends RecyclerView.Adapter<ShoopingCartAdapter.ViewHolder> {
private Context mContext;
private List<ShoppingCartBean.ResultBean> mList;
public ShoopingCartAdapter(Context mContext) {
this.mContext = mContext;
mList = new ArrayList<>();
}
public void setmList(List<ShoppingCartBean.ResultBean> mList) {
this.mList = mList;
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(mContext, R.layout.shopping_car_item, null);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
viewHolder.goodsImg.setImageURI(mList.get(i).getPic());
viewHolder.goodsName.setText(mList.get(i).getCommodityName()+" ");
viewHolder.goodsPrice.setText("¥" + mList.get(i).getPrice());
viewHolder.isCheck.setChecked(mList.get(i).isChecked());
//加减视图赋值
viewHolder.addMinus.setNumber(mList.get(i).getCount());
viewHolder.addMinus.setChangeCount(new CustomViewAddMinus.ChangeCount() {
@Override
public void setCount(int count) {
if(shopCarListener!=null){
shopCarListener.setNums(i,count);
}
}
});
viewHolder.isCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mList.get(i).setChecked(viewHolder.isCheck.isChecked());
if (shopCarListener != null) {
shopCarListener.onClick(mList);
}
}
});
viewHolder.isCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mList.get(i).setChecked(viewHolder.isCheck.isChecked());
if (shopCarListener != null) {
shopCarListener.onClick(mList);
}
}
});
}
@Override
public int getItemCount() {
return mList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.isCheck)
CheckBox isCheck;
@BindView(R.id.goods_img)
SimpleDraweeView goodsImg;
@BindView(R.id.goods_name)
TextView goodsName;
@BindView(R.id.goods_price)
TextView goodsPrice;
@BindView(R.id.add_minus)
CustomViewAddMinus addMinus;
public ViewHolder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
//设置
public void setGoodsNumber(int postion, int counts) {
ShoppingCartBean.ResultBean resultBean = mList.get(postion);
resultBean.setCount(counts);
}
public interface ShopCarListener {
void onClick(List<ShoppingCartBean.ResultBean> mList);
void setNums(int i, int count);
}
private ShopCarListener shopCarListener;
public void setShopCarListener(ShopCarListener shopCarListener) {
this.shopCarListener = shopCarListener;
}
}