//自定义view加减实现
public class customview extends RelativeLayout implements View.OnClickListener {
private Button addo;
private Button removeo;
private TextView textview;
private Integer num;
private int postion;
Context context;
List<CarBean.DataBean.ListBean> list;
private GoodsAdapter goodsAdapter;
public customview(Context context) {
super(context);
intit(context);
}
public customview(Context context, AttributeSet attrs) {
super(context, attrs);
intit(context);
}
public customview(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
intit(context);
}
public customview(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
intit(context);
}
private void intit(Context context) {
View inflate = View.inflate(context, R.layout.add_bar, null);
addo = inflate.findViewById(R.id.add);
removeo = inflate.findViewById(R.id.remove);
textview = inflate.findViewById(R.id.textview);
addo.setOnClickListener(this);
removeo.setOnClickListener(this);
addView(inflate);
textview.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
num = Integer.parseInt(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
public void setdata(GoodsAdapter goodsAdapter, List<CarBean.DataBean.ListBean> list, int i){
this.goodsAdapter =goodsAdapter;
this.list=list;
postion=i;
textview.setText(list.get(i).getNum());
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.add:
num++;
textview.setText(""+num);
list.get(postion).setNum(String.valueOf(num));
mCallBackListener.callBack();
goodsAdapter.notifyItemChanged(postion);
break;
case R.id.remove:
if (num<1){
Toast.makeText(context,"地了",Toast.LENGTH_SHORT).show();
}else {
num--;
textview.setText(""+num);
list.get(postion).setNum(String.valueOf(num));
mCallBackListener.callBack();
goodsAdapter.notifyItemChanged(postion);
}
break;
}
}
private CallBackListener mCallBackListener;
public void setOnCallBack(CallBackListener listener) {
this.mCallBackListener = listener;
}
public interface CallBackListener {
void callBack();
}
}
//自定义加减布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:background="@drawable/jia"
android:id="@+id/add"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
/>
<EditText
android:id="@+id/textview"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="51dp"
android:gravity="center"
android:text="0"
android:textSize="15dp" />
<Button
android:id="@+id/remove"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="105dp"
android:layout_marginTop="4dp"
android:background="@drawable/jian" />
</RelativeLayout>
//商品适配器
public class GoodsAdapter extends RecyclerView.Adapter<GoodsAdapter.ViewHolder> {
List<CarBean.DataBean.ListBean> list;
Context context;
public GoodsAdapter(Context context,List<CarBean.DataBean.ListBean> list) {
this.list = list;
this.context=context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
ViewHolder viewHolder = new ViewHolder(LayoutInflater.from(context).inflate(R.layout.recyitem_layout, viewGroup, false));
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
viewHolder.name.setText(list.get(i).getTitle());
viewHolder.price.setText(list.get(i).getPrice());
Glide.with(context).load(list.get(i).getImages().split("\\|")[0].replace("https","http")).into(viewHolder.imageviewitem);
viewHolder.checkitem.setChecked(list.get(i).isCheck());
viewHolder.checkitem.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
list.get(i).setCheck(b);
if (mShopCallBackListener!=null){
mShopCallBackListener.callBack();
}
}
});
viewHolder.custom.setdata(this,list,i);
viewHolder.custom.setOnCallBack(new customview.CallBackListener() {
@Override
public void callBack() {
if (mShopCallBackListener!=null){
mShopCallBackListener.callBack();
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public void setAllCheck(boolean isAllcheck){
for (CarBean.DataBean.ListBean listBean:list
) {
listBean.setCheck(isAllcheck);
}
notifyDataSetChanged();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final customview custom;
private ImageView imageviewitem;
private TextView name,price;
private CheckBox checkitem;
public ViewHolder(@NonNull View itemView) {
super(itemView);
checkitem= itemView.findViewById(R.id.checkboxitem);
imageviewitem= itemView.findViewById(R.id.imageviewItem);
price= itemView.findViewById(R.id.textprice);
name= itemView.findViewById(R.id.texttitle);
custom =itemView.findViewById(R.id.custom);
}
}
private ShopCallBackListener mShopCallBackListener;
public void setListener(ShopCallBackListener listener) {
this.mShopCallBackListener = listener;
}
public interface ShopCallBackListener {
void callBack();
}
//商家适配器
public class CarAdapter extends RecyclerView.Adapter<CarAdapter.ViewHolder> {
List<CarBean.DataBean> data;
Context context;
public CarAdapter(Context context, List<CarBean.DataBean> data) {
this.context=context;
this.data=data;
}
@NonNull
@Override
public CarAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View inflate = LayoutInflater.from(context).inflate(R.layout.car_layout, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(inflate);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull final CarAdapter.ViewHolder viewHolder, final int i) {
viewHolder.textView.setText(data.get(i).getSellerName());
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
viewHolder.recyviewitem.setLayoutManager(linearLayoutManager);
final List<CarBean.DataBean.ListBean> list = data.get(i).getList();
final GoodsAdapter goodsAdapter = new GoodsAdapter(context, list);
viewHolder.recyviewitem.setAdapter(goodsAdapter);
viewHolder.checkBox.setChecked(data.get(i).isCheck());
goodsAdapter.setListener(new GoodsAdapter.ShopCallBackListener() {
@Override
public void callBack() {
if (mShopCallBackListener!=null){
mShopCallBackListener.callBack(data);
}
List<CarBean.DataBean.ListBean> list1 = data.get(i).getList();
boolean ischeckall=true;
for (CarBean.DataBean.ListBean bean:list1
) {
if (!bean.isCheck()){
ischeckall=false;
break;
}
viewHolder.checkBox.setChecked(ischeckall);
list1.get(i).setCheck(ischeckall);
}
}
});
viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
data.get(i).setCheck(viewHolder.checkBox.isChecked());
goodsAdapter.setAllCheck(viewHolder.checkBox.isChecked());
}
});
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private CheckBox checkBox;
private TextView textView;
private final RecyclerView recyviewitem;
public ViewHolder(@NonNull View itemView) {
super(itemView);
checkBox= itemView.findViewById(R.id.check);
textView= itemView.findViewById(R.id.text);
recyviewitem=itemView.findViewById(R.id.recyviewitem);
}
}
private ShopCallBackListener mShopCallBackListener;
public void setListener(ShopCallBackListener listener) {
this.mShopCallBackListener = listener;
}
public interface ShopCallBackListener {
void callBack(List<CarBean.DataBean> list);
}
}
//最后的选中切换状态改变jiage
public class MainActivity extends AppCompatActivity implements ShopViewInter,View.OnClickListener {
private RecyclerView recyview;
private List<CarBean.DataBean> data;
private TextView goodssunm;
private TextView sumprice;
private CheckBox checkall;
private CarAdapter carAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ShopPresenterBase shopPresenterBase = new ShopPresenterBase(this);
shopPresenterBase.getShopModel();
recyview = findViewById(R.id.recyview);
goodssunm = findViewById(R.id.sumgoods);
sumprice = findViewById(R.id.sumprice);
checkall = findViewById(R.id.checkall);
checkall.setOnClickListener(this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyview.setLayoutManager(linearLayoutManager);
}
@Override
public void getViewData(Object viewdata) {
CarBean carBean= (CarBean) viewdata;
data = carBean.getData();
carAdapter = new CarAdapter(this, data);
recyview.setAdapter(carAdapter);
carAdapter.setListener(new CarAdapter.ShopCallBackListener() {
@Override
public void callBack(List<CarBean.DataBean> list) {
double totalPrice = 0;
//勾选商品的数量,不是该商品购买的数量
int num = 0;
//所有商品总数,和上面的数量做比对,如果两者相等,则说明全选
int totalNum = 0;
for (int a=0;a<list.size();a++){
//获取商家李的商品
List<CarBean.DataBean.ListBean> listBeans = list.get(a).getList();
for (int i=0;i<listBeans.size();i++){
//得到商品的数量
String num2 = listBeans.get(i).getNum();
int i1 = Integer.parseInt(num2);
totalNum=totalNum+i1;
//取选中的状态
if (listBeans.get(i).isCheck()){
String price = listBeans.get(i).getPrice();
String num1 = listBeans.get(i).getNum();
Double pricedou = Double.valueOf(price);
int intnum = Integer.parseInt(num1);
totalPrice=pricedou*intnum;
num=num+intnum;
Log.i("price",""+totalPrice);
Log.i("num",""+num);
}
}
}
if (num < totalNum) {
//不是全部选中
checkall.setChecked(false);
} else {
//是全部选中
checkall.setChecked(true);
}
sumprice.setText("合计1:" + totalPrice);
goodssunm.setText("去结算(" + num + ")");
}
});
}
private void checkSelect(boolean bool){
double totalprice=0;
int num=0;
for (int a=0;a<data.size();a++){
CarBean.DataBean dataBean = data.get(a);
dataBean.setCheck(bool);
List<CarBean.DataBean.ListBean> list = dataBean.getList();
for (int i=0;i<list.size();i++){
list.get(i).setCheck(bool);
String num1 = list.get(i).getNum();
String price = list.get(i).getPrice();
Double douprice = Double.valueOf(price);
Integer intnum = Integer.valueOf(num1);
totalprice=totalprice+(douprice*intnum);
num=num+intnum;
}
if (bool){
sumprice.setText("合计+"+totalprice);
goodssunm.setText("去结算"+num);
}else {
sumprice.setText("合计+0");
goodssunm.setText("去结算0");
}
}
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.checkall:
checkSelect(checkall.isChecked());
carAdapter.notifyDataSetChanged();
break;
}
}
}