全选,反选

package com.bwei.yuekao_7.ui.activity;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;

import com.bwei.yuekao_7.R;
import com.bwei.yuekao_7.data.bean.UserBean;
import com.bwei.yuekao_7.di.IContract;
import com.bwei.yuekao_7.di.presenter.PresenterImpl;
import com.bwei.yuekao_7.ui.adapter.SubAdapter;
import com.google.gson.Gson;

import java.util.ArrayList;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

//继承完以后去P层
public class ShoppingCarActivity extends AppCompatActivity implements IContract.IView, SubAdapter.OnItemCheckListener {

    @BindView(R.id.cb_all)
    CheckBox cbAll;
    @BindView(R.id.tv_price)
    TextView tvPrice;
    @BindView(R.id.tv_count)
    TextView tvCount;
    private IContract.IPresenter presenter;
    private ArrayList<UserBean.DataBean> data;
    private Context context;
    private RecyclerView rl_view;
    private SubAdapter subAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shopping_car);
        ButterKnife.bind(this);
        rl_view = findViewById(R.id.rl_view);
        context = this;
        //三.1:
        presenter = new PresenterImpl();
        //三.2:
        presenter.attachView(this);
        //三.5:(从P层(二点8过来))
        presenter.responseData();
    }

    @Override
    public void ShowResponse(final String msg) {
        //三.9:
        Log.i("aa", msg);
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                UserBean userBean = gson.fromJson(msg, UserBean.class);
                data = (ArrayList<UserBean.DataBean>) userBean.getData();
                LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
                rl_view.setLayoutManager(manager);
                subAdapter = new SubAdapter(context, data);
                rl_view.setAdapter(subAdapter);
                //7.(从适配器8过来用于显示全选,反选,选最后一个)
                //设置完以后去Adapter
                subAdapter.setOnItemCheckListener(ShoppingCarActivity.this);
            }
        });
    }

    //三.3:(从二6过来)
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //三.4:(创建Utils)
        presenter.detachView(this);
    }

    @OnClick({R.id.cb_all, R.id.tv_price, R.id.tv_count})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.cb_all:
                //1.去bean添加新增字段( private boolean isChecked;重写getter和setter方法 在list后添加)
                /*
                *  private List<ListBean> list;
                        //新增字段
                        private boolean isChecked;

                        public boolean getChecked() {
                            return isChecked;
                        }

                        public void setChecked(boolean checked) {
                            isChecked = checked;
                        }
                * */
                //2.如果选中,设置子条目全部选中
                if (cbAll.isChecked()){
                    //3.对集合中的每个条目定义为被选中
                    for (int i = 0; i < data.size(); i++) {
                        data.get(i).setChecked(true);
                    }
                    //5.刷新适配器
                    subAdapter.notifyDataSetChanged();
                }else {
                    //4.如果未选中,设置子条目全部没选中
                    for (int i = 0; i < data.size(); i++) {
                        data.get(i).setChecked(false);
                    }
                    //6.刷新适配器(去适配器)
                    subAdapter.notifyDataSetChanged();
                }
                break;
            case R.id.tv_price:
                break;
            case R.id.tv_count:
                break;
        }
    }

    @Override
    public void onItemChecked(int position, boolean checked) {
        //8.更新数据源
        data.get(position).setChecked(checked);
        boolean tag = true;
        //9.遍历集合,查看是否有数据源未选中
        for (UserBean.DataBean dataBean : data ){
            if (dataBean.getChecked() == false){
                tag = false;
            }
        }
        cbAll.setChecked(tag);
        subAdapter.notifyDataSetChanged();
    }
}

//适配器

package com.bwei.yuekao_7.ui.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.ImageView;
import android.widget.TextView;

import com.bwei.yuekao_7.R;
import com.bwei.yuekao_7.data.bean.UserBean;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;

/**
 * Created by 杨柳 on 2018/8/23.
 */

public class SubAdapter extends RecyclerView.Adapter<SubAdapter.SubViewHolder>{

    private Context context;
    private ArrayList<UserBean.DataBean> data;

    public SubAdapter(Context context, ArrayList<UserBean.DataBean> data) {
        this.context = context;
        this.data = data;
    }

    @NonNull
    @Override
    public SubViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View rootView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false);
        SubViewHolder subViewHolder = new SubViewHolder(rootView);
        return subViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull SubViewHolder holder, int position) {
        String images = data.get(position).getList().get(0).getImages();
        if ( images != null && images.contains("|")){
            String[] imgUrl = images.split("\\|");
            Picasso.get().load(imgUrl[0]).into(holder.iv_showIcon);
        }else {
            Picasso.get().load(images).into(holder.iv_showIcon);
        }
        //对文字展示
        holder.tv_showInfo.setText(data.get(position).getList().get(0).getTitle());
        holder.tv_price.setText("单价是¥:"+data.get(position).getList().get(0).getPrice());
        //1.获取数据源的条目信息
        holder.check.setChecked(data.get(position).getChecked());

    }

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

    class SubViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        private final CheckBox check;
        private final ImageView iv_showIcon;
        private final TextView tv_showInfo;
        private final TextView tv_price;

        public SubViewHolder(View itemView) {
            super(itemView);
            check = itemView.findViewById(R.id.cb_chose);
            iv_showIcon = itemView.findViewById(R.id.iv_showIcon);
            tv_showInfo = itemView.findViewById(R.id.tv_showInfo);
            tv_price = itemView.findViewById(R.id.tv_price);
            //2.设置监听方法(选第二个)
            check.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            //9.把点击时的位置进行回转
            int position = getLayoutPosition();
            //10.
            boolean checked = check.isChecked();
            //8.----把9定义的position传进来
            onItemCheckListener.onItemChecked(position,checked);

        }
    }

    //3.设置接口
    public interface OnItemCheckListener{
        //4.用于反馈
        void onItemChecked(int position, boolean checked);
    }

    //5
    OnItemCheckListener onItemCheckListener;
    //6.
    public void setOnItemCheckListener(OnItemCheckListener onItemCheckListener){
        //7.
        this.onItemCheckListener = onItemCheckListener;
    }
}

猜你喜欢

转载自blog.csdn.net/Yang_Liu_1/article/details/82015355