一级购物车

//自定义view里

package com.bawei.shop.activity;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.bawei.shop.R;

/**

  • **/
    public class CustonView extends LinearLayout {
    private int i=1;
    private TextView num;

    public CustonView(Context context) {
    super(context);
    }

    public CustonView(Context context, AttributeSet attrs) {
    super(context, attrs);
    initData(context);
    }

    private void initData(Context context) {
    View view = LayoutInflater.from(context).inflate(R.layout.item,null,false);
    addView(view);
    Button reduce = view.findViewById(R.id.reduce);
    num = view.findViewById(R.id.num);
    Button plus = view.findViewById(R.id.plus);

     //加
     plus.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
             i++;
             num.setText(i+"");
             if (onPlusListener!=null){
                 onPlusListener.onPlus(i);
             }
         }
     });
    
     //减
     reduce.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
             i--;
             if (i<1){
                 Toast.makeText(getContext(), "不能减了", Toast.LENGTH_SHORT).show();
             }
             else {
                 num.setText(i+"");
                 if (onReduceListener!=null){
                     onReduceListener.onReduce(i);
                 }
             }
    
         }
     });
    

    }

    public CustonView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    }

    //接口(-)
    public interface OnReduceListener{
    void onReduce(int s);
    }
    public OnReduceListener onReduceListener;
    public void setOnReduceListener(OnReduceListener onReduceListener){
    this.onReduceListener=onReduceListener;
    }

    //接口+
    public interface OnPlusListener{
    void onPlus(int s);
    }
    public OnPlusListener onPlusListener;
    public void setOnPlusListener(OnPlusListener onPlusListener){
    this.onPlusListener=onPlusListener;
    }
    }

//MainActivity
package com.bawei.shop.activity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;

import com.bawei.shop.R;
import com.bawei.shop.adapter.MyAdapter;
import com.bawei.shop.presenter.ShopPresenter;
import com.bawei.shop.view.ShopView;

import org.json.JSONArray;

public class MainActivity extends AppCompatActivity implements ShopView {

private RecyclerView recy;
private TextView price;
private CheckBox check2;
private MyAdapter myAdapter;

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

    //找控件
    recy = findViewById(R.id.recy);
    price = findViewById(R.id.price);
    check2 = findViewById(R.id.check2);

    
    //点击全选
    check2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean checked = check2.isChecked();
            if (checked){
                myAdapter.notifCheckData(true);
            }
            else {
                myAdapter.notifCheckData(false);
            }
        }
    });

    //布局管理器
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    recy.setLayoutManager(linearLayoutManager);

    ShopPresenter shopPresenter = new ShopPresenter(this);
    shopPresenter.sendShop();


}

@Override
public void shop(JSONArray result) {
    myAdapter = new MyAdapter(MainActivity.this, result);

    recy.setAdapter(myAdapter);


    //调用适配器的方法
    myAdapter.setOnMyAdapterListener(new MyAdapter.OnMyAdapterListener() {
        @Override
        public void onCheckl(boolean frag) {
            check2.setChecked(frag);
        }
    });

}

}

//适配器
package com.bawei.shop.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bawei.shop.R;
import com.bawei.shop.activity.CustonView;
import com.bumptech.glide.Glide;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

/**

  • @ * @package com.bawei.shop.adapter
    **/
    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private int num =1;
    private Map<String,Boolean> map = new HashMap<>();
    Context context;
    JSONArray result;

    public MyAdapter(Context context, JSONArray result) {
    this.context = context;
    this.result = result;
    setChickData(false);
    }

    //接口
    public interface OnMyAdapterListener{
    void onCheckl(boolean frag);
    }
    public OnMyAdapterListener onMyAdapterListener;
    public void setOnMyAdapterListener(OnMyAdapterListener onMyAdapterListener){
    this.onMyAdapterListener=onMyAdapterListener;
    }

    private void setChickData(boolean checkFlag){
    map.clear();
    for (int i=0;i<result.length();i++){
    try {
    JSONObject jsonObject = result.getJSONObject(i);
    String commodityId = jsonObject.getString(“commodityId”);
    map.put(commodityId,checkFlag);
    } catch (JSONException e) {
    e.printStackTrace();
    }

     }
    

    }

    public void notifCheckData(boolean checkFlag){
    setChickData(checkFlag);
    notifyDataSetChanged();
    }

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

    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int i) {
    try {
    JSONObject jsonObject = result.getJSONObject(i);
    final String commodityName = jsonObject.getString(“commodityName”);
    String masterPic = jsonObject.getString(“masterPic”);
    String commodityId = jsonObject.getString(“commodityId”);
    String price = jsonObject.getString(“price”);
    myViewHolder.name.setText(commodityName);
    myViewHolder.price1.setText(price);
    Glide.with(context).load(masterPic).into(myViewHolder.img);

         myViewHolder.check1.setChecked(map.get(commodityId));
         myViewHolder.check1.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 boolean checked = myViewHolder.check1.isChecked();
                 map.put(commodityName,checked);
                 boolean frag=true;
                 for (String k:map.keySet()) {
                     Boolean aBoolean = map.get(k);
                     if (!aBoolean){
                         frag=false;
                     }
                     else {
                         if (onMyAdapterListener!=null){
                             onMyAdapterListener.onCheckl(frag);
                         }
                     }
                 }
             }
         });
    
         //数量加
         myViewHolder.cust.setOnPlusListener(new CustonView.OnPlusListener() {
             @Override
             public void onPlus(int s) {
                 notifyItemChanged(s);
             }
         });
    
    
    
         //数量减
         myViewHolder.cust.setOnReduceListener(new CustonView.OnReduceListener() {
             @Override
             public void onReduce(int s) {
                 notifyItemChanged(s);
             }
         });
    
    
    
     } catch (JSONException e) {
         e.printStackTrace();
     }
    

    }

    @Override
    public int getItemCount() {
    return result.length();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder{

     private final ImageView img;
     private final TextView name;
     private final TextView price1;
     private final CustonView cust;
     private final EditText num;
     private final CheckBox check1;
    
     public MyViewHolder(@NonNull View itemView) {
         super(itemView);
         img = itemView.findViewById(R.id.img);
         name = itemView.findViewById(R.id.name);
         price1 = itemView.findViewById(R.id.price1);
         cust = itemView.findViewById(R.id.cust);
         num = itemView.findViewById(R.id.num);
         check1 = itemView.findViewById(R.id.check1);
     }
    

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值