购物车Adapter recycle的item点击事件

package com.example.gq.shoucar;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.gq.shoucar.bean.ShopBean;
import com.example.gq.shoucar.presenter.MainPresenter;
import com.example.gq.shoucar.view.MainViewListener;

public class MainActivity extends AppCompatActivity implements MainViewListener {

    MainPresenter presenter = new MainPresenter(this, this); //传视图到p层
    private RecyclerView Recyclerview01;
    private CheckBox mAllselectThird;
    private TextView mTotalpriceThird;
    private TextView mTotalnumThird;
    private TextView mSubmitThird;
    private LinearLayout mPayLinearThird;
    private ShouAdapter adapter;
    private RecyclerView mRecyclerviewThird;


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


        presenter.aishasha();  //调数据

        LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this);
        Recyclerview01.setLayoutManager(manager);

        //传这个过去
        adapter = new ShouAdapter(this);

        Recyclerview01.setAdapter(adapter);  //设置适配器

        adapter.setOnItemClickListener(new ShouAdapter.OnItemClickListener() {
            //
            public void onItemClick(View view, int position) {


                Intent intent = new Intent(MainActivity.this,SecondActivity.class);

                startActivity(intent);
            }
        });

    }

    private void initView() {
        Recyclerview01 = (RecyclerView) findViewById(R.id.third_recyclerview);
        mAllselectThird = (CheckBox) findViewById(R.id.third_allselect);
        mTotalpriceThird = (TextView) findViewById(R.id.third_totalprice);
        mTotalnumThird = (TextView) findViewById(R.id.third_totalnum);
        mSubmitThird = (TextView) findViewById(R.id.third_submit);
        mPayLinearThird = (LinearLayout) findViewById(R.id.third_pay_linear);

    }


    @Override
    public void success(ShopBean bean) { //更新UI的数据
        //  mText01.setText(bean.getData().get(0).getList().get(0).getTitle());
        //把这个bean传到adapter里面
        adapter.add(bean);


    }
    //解决内存泄漏


    // @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.asdf();

    }
}


 ========================adapter ========================================================   




package com.example.gq.shoucar;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.gq.shoucar.bean.ShopBean;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by gq on 2017/11/21.
 */

    //
public class ShouAdapter  extends RecyclerView.Adapter<ShouAdapter.IViewHolder> implements View.OnClickListener{
      //传一个bean过来
      Context context;
    private OnItemClickListener mOnItemClickListener = null;
    private List<ShopBean.DataBean.ListBean> list;

        private Map<String,String> map = new HashMap<>();

    public ShouAdapter( Context context) {  //传上下文过来
          this.context=context;
      }

    /**
     * 添加数据 并更新显示
     * @param bean
     */
    public void add(ShopBean bean) {

        if (this.list == null) {
            this.list = new ArrayList<>();
        }

               // 遍历商家   bean.getData()这里面是外面对象里的 在里层是list
        for (ShopBean.DataBean shop : bean.getData()) {
              // 遍历商品
              map.put(shop.getSellerid(),shop.getSellerName()); //键值对表id 对应商品名

                for (int i = 0; i < shop.getList().size(); i++) {  //list集合内所有东西
                    this.list.add(shop.getList().get(i));  //把所有商品都添加到集合里  只有商品
                }
         }

                   setFirst(this.list);  //this.list


               notifyDataSetChanged();   //添加进去数据后要更新UI

    }

    /**
     * 设置数据源, 控制显示商家
     * @param list
     */


    private void setFirst(List<ShopBean.DataBean.ListBean> list){

        if(list.size() > 0){
            list.get(0).setIsFirst(1);
            for(int i=1;i<list.size();i++){   //每个商品背上都有商铺 第一个商品上面肯定要显示商家
                //所以从每个商铺的第二个商品开始比 ,如果第三个商品和第二个商品的商铺id都一样  那第三个商品的一定不是 所以就隐藏
                if(list.get(i).getSellerid() == list.get(i-1).getSellerid()){ //list.get(i).getSellerid(){是第三个商品}

                    list.get(i).setIsFirst(2);//隐藏
                  }else{
                    list.get(i).setIsFirst(1);//显示


                }
            }

        }

    }
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
       //选中









    public ShouAdapter.IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.adapter_layout, null);
        view.setOnClickListener((View.OnClickListener) this);
        return new IViewHolder(view);
           }

    public void onBindViewHolder(final ShouAdapter.IViewHolder holder, final int position) {


         //将position保存在itemView的Tag中,以便点击时进行获取
              holder.itemView.setTag(position);  //条目点击事件


          holder.shop_checkbox.setOnClickListener(new View.OnClickListener() {

              public void onClick(View view) {

                  boolean checked = holder.shop_checkbox.isChecked();//选中的值
                  list.get(position).setShopSelected(checked); //获取选中或者非选中的状态 因为改变的是list集合的值
                  // 所以要刷新

                  for(int i=0;i<list.size();i++){  //
                      if(list.get(position).getSellerid() == list.get(i).getSellerid()){
                          list.get(i).setItemSelected(holder.shop_checkbox.isChecked());
                      }
                  }

                  notifyDataSetChanged();




              }
          });





          // 显示商品图片
          if(list.get(position).getIsFirst() == 1){
            //显示商家
            holder.shop_checkbox.setVisibility(View.VISIBLE);
            holder.tvItemShopcartShopname.setVisibility(View.VISIBLE);

              holder.shop_checkbox.setChecked(list.get(position).isShopSelected()); //商家选中

//            显示商家的名称
//            list.get(position).getSellerid() 取到商家的id
//            map.get()取到 商家的名称      还需要一个map集合
            holder.tvItemShopcartShopname.setText(map.get(String.valueOf(list.get(position).getSellerid())));
        } else {
            holder.shop_checkbox.setVisibility(View.GONE);
            holder.tvItemShopcartShopname.setVisibility(View.GONE);
        }




        展示
        String[] url = list.get(position).getImages().split("\\|"); //分隔符
        ImageLoader.getInstance().displayImage(url[0],holder.imageView);
          holder.name.setText(list.get(position).getTitle());
          holder.price.setText(list.get(position).getPrice()+"");
          // holder..setEditText(list.get(position).getNum());
       //--------------------------商家显示隐藏 ------------------------------------------------


     }



    public int getItemCount() {
        return list == null ? 0 : list.size();

    }



       //点击条目的方法
     public void onClick(View v) {

        if (mOnItemClickListener != null) {
            //注意这里使用getTag方法获取position
            mOnItemClickListener.onItemClick(v,(int)v.getTag());
        }


    }


    static class IViewHolder extends RecyclerView.ViewHolder{

          private final ImageView imageView;
          private final TextView price;
          private final TextView name;
          private final CheckBox shop_checkbox; //商家的多选框
          private final TextView tvItemShopcartShopname;//购物车商家名

          public IViewHolder(View itemView) {
              super(itemView);

              name = (TextView) itemView.findViewById(R.id.item_name);
              price = (TextView) itemView.findViewById(R.id.item_price);
              imageView = (ImageView) itemView.findViewById(R.id.item_pic);
              shop_checkbox = (CheckBox) itemView.findViewById(R.id.shop_checkbox);

               tvItemShopcartShopname = (TextView) itemView.findViewById(R.id.tv_item_shopcart_shopname);//商家展示


          }
      }//控件





    public void setOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }


    public static interface OnItemClickListener {
        void onItemClick(View view , int position);
    }


}

//


package com.example.muhanxi.mvpshopdemo;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.muhanxi.mvpshopdemo.bean.ShopBean;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * Created by muhanxi on 17/11/21.
 */

public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.IViewHolder> {

    private Context context;

    private List<ShopBean.DataBean.ListBean> list;
    // 存放 商家的id 和 商家名称
    private Map<String,String> map = new HashMap<>();

    public ShopAdapter(Context context) {
        this.context = context;
    }


    /**
     * 添加数据 并更新显示
     * @param bean
     */
    public void add(ShopBean bean) {
        if (this.list == null) {
            this.list = new ArrayList<>();
        }
    
        // 遍历商家
        for (ShopBean.DataBean shop : bean.getData()) {
                 
             map.put(shop.getSellerid(),shop.getSellerName());
            // 遍历商品
            for (int i = 0; i < shop.getList().size(); i++) {
                this.list.add(shop.getList().get(i));  //拿出来所有的商品数据
                  
                
            }
        }



        setFirst(this.list);

        notifyDataSetChanged();
    }


    /**
     * 设置数据源, 控制显示商家
     * @param list
     */
    private void setFirst(List<ShopBean.DataBean.ListBean> list){

        if(list.size() > 0){
            list.get(0).setIsFirst(1);
            for(int i=1;i<list.size();i++){  //所以从每个商铺的第二个商品开始比 ,如果第三个商品和第二个商品的商铺id都一样  那第三个商品的一定不是 所以就隐藏
                if(list.get(i).getSellerid() == list.get(i-1).getSellerid()){
                    list.get(i).setIsFirst(2); //隐藏
                }else{
                    list.get(i).setIsFirst(1); //显示
                }
            }

        }

    }
    
      

    @Override
    public ShopAdapter.IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


        View view = View.inflate(context, R.layout.adapter_layout, null);
        return new IViewHolder(view);
    }  
      
                    

      
    public void onBindViewHolder(final ShopAdapter.IViewHolder holder, final int position) {


        // 显示商品图片

        if(list.get(position).getIsFirst() == 1){
            

            //显示商家     shopSelected  //true 表示商家选中 false相反
            holder.shop_checkbox.setVisibility(View.VISIBLE);
            holder.tvItemShopcartShopname.setVisibility(View.VISIBLE);
            holder.shop_checkbox.setChecked(list.get(position).isShopSelected());
              
              

//            显示商家的名称
//            list.get(position).getSellerid() 取到商家的id
//            map.get()取到 商家的名称  
            holder.tvItemShopcartShopname.setText(map.get(String.valueOf(list.get(position).getSellerid())));
                        
            
           } else {
            holder.shop_checkbox.setVisibility(View.GONE);
            holder.tvItemShopcartShopname.setVisibility(View.GONE);
           }


        //控制 商品的  checkbox
         holder.item_checkbox.setChecked(list.get(position).isItemSelected());
    
            
         

        String[] url = list.get(position).getImages().split("\\|");
        ImageLoader.getInstance().displayImage(url[0],holder.item_pic);


        holder.item_name.setText(list.get(position).getTitle());
        holder.item_price.setText(list.get(position).getPrice()+"");

 
        holder.plusViewId.setEditText(list.get(position).getNum());


        // 商家的checkbox
        holder.shop_checkbox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                list.get(position).setShopSelected(holder.shop_checkbox.isChecked());
                     
                    
                for(int i=0;i<list.size();i++){   //商家之间的比较 list.get(position).getSellerid()//选中的商品post选中的那个子条目
                   
                    if(list.get(position).getSellerid() == list.get(i).getSellerid()){ 当前商品的商铺id去比较所有商品的商铺id
                          ==同一个商铺  如果是同一个商铺的话  给这个商铺下的所有商品赋一个商铺的多选状态
                          
                        list.get(i).setItemSelected(holder.shop_checkbox.isChecked()); holder.shop_checkbox.isChecked()  是状态true或false    把商铺的状态赋给这个商铺下面的商品
                    }
                }

                notifyDataSetChanged();
                sum(list);

            }
        });

        // 商品的checkbox
        holder.item_checkbox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                list.get(position).setItemSelected(holder.item_checkbox.isChecked());



                for(int i=0;i<list.size();i++){    
                    for (int j=0;j<list.size();j++){ //同一个商铺下面并且商品是位选中状态
                        if(list.get(i).getSellerid() == list.get(j).getSellerid() && !list.get(j).isItemSelected()){
                            //if(list.get(i).getSellerid() == list.get(j).getSellerid()  判断商品是否是一个商铺的
                            //list.get(j).isItemSelected() //true和false  
                             //同一个商铺里面只要有一个商屏是未选中 就给商铺赋值一个非 斌退出循环
                            list.get(i).setShopSelected(false);
                            break;
                        }else {
                            list.get(i).setShopSelected(true);
                        }
                    }
                }

                notifyDataSetChanged();
                sum(list);

            }
        });






        holder.item_del.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                list.remove(position);

                setFirst(list);  重新判断一下每一个商铺中的第一个商品位置

                notifyDataSetChanged();
                sum(list);

            }
        });




        //加减号
        holder.plusViewId.setListener(new PlusView.ClickListener() {
            @Override
            public void click(int count) {

                list.get(position).setNum(count);
                notifyDataSetChanged();
                sum(list);

            }
        });





    }




    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();
    }


    /**
     * 计算总价
     * @param list
     */
    private void sum(List<ShopBean.DataBean.ListBean> list){

        int totalNum = 0 ;
        float totalMoney =  0.0f;

        boolean allCheck =true;
        for(int i=0;i<list.size();i++){
            if(list.get(i).isItemSelected()){
                totalNum += list.get(i).getNum() ;
                totalMoney += list.get(i).getNum() * list.get(i).getPrice();
            }else {
                allCheck = false;
            }
        }

        listener.setTotal(totalMoney+"",totalNum+"",allCheck);
    }


    public void selectAll(boolean check){

        for(int i=0;i<list.size();i++){
            list.get(i).setShopSelected(check); //所有商铺的选中状态
             //所有上平的选中状态
            list.get(i).setItemSelected(check);

        }
        notifyDataSetChanged();

        sum(list);

    }


    static class IViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.view)
        View view;
        @BindView(R.id.shop_checkbox)
        CheckBox shop_checkbox;
        @BindView(R.id.tv_item_shopcart_shopname)
        TextView tvItemShopcartShopname;
        @BindView(R.id.ll_shopcart_header)
        LinearLayout llShopcartHeader;
        @BindView(R.id.item_checkbox)
        CheckBox item_checkbox;
        @BindView(R.id.item_pic)
        ImageView item_pic;
        @BindView(R.id.item_price)
        TextView item_price;
        @BindView(R.id.item_name)
        TextView item_name;
        @BindView(R.id.tv_item_shopcart_cloth_size)
        TextView tvItemShopcartClothSize;
        @BindView(R.id.plus_view_id)
        PlusView plusViewId;
        @BindView(R.id.item_del)
        ImageView item_del;

        IViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }

       
         
   
    public UpdateUiListener listener;
    public void setListener(UpdateUiListener listener){
        this.listener = listener;
    }
    
    interface UpdateUiListener {
        public void setTotal(String total,String num,boolean allCheck);
    }


}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值