CheckBox被选中  显示被选中的信息, 全选 全不选的方法  结合RecyclerView

Adapter代码:

import android.content.Context;
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.CompoundButton;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by dllo on 15/12/31.
 */
public class SecondRecyclerViewAdapter extends RecyclerView.Adapter<SecondRecyclerViewAdapter.MyViewHolder>{
    private Context context;
    private List<String> data;
    private List<Boolean> checkBoxStates;//存放CheckBox的状态
    
    public SecondRecyclerViewAdapter(Context context) {
        this.context = context;
        initData();
    }

    private void initData() {
        data = new ArrayList<>();
        checkBoxStates = new ArrayList<>();
        for (int i = 0; i < 50; i++) {
            data.add("第" + i + "条");
            checkBoxStates.add(false);
        }
    }

    //该方法为了获取被选中的CheckBox的text信息
    public String getCheckedData(){
        String result = "";
        for (int i = 0; i < checkBoxStates.size(); i++) {
            if(checkBoxStates.get(i)){//判断CheckBox是否被选中
                result += data.get(i);//如果被选中
            }
        }
        return result;
    }

    //用CheckBox的选择状态的set方法设置位置和选择状态
    //全选
    public void selectAll() {
        for (int i = 0; i < data.size(); i++) {
            checkBoxStates.set(i, true);
        }
        notifyDataSetChanged();
    }

    //全不选
    public void selectNone() {
        for (int i = 0; i < data.size(); i++) {
            checkBoxStates.set(i, false);
        }
        notifyDataSetChanged();
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_rc,parent,false);
        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {
        holder.mTextView.setText(data.get(position));
        holder.mCheckBox.setChecked(checkBoxStates.get(position));
        holder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                int pos = holder.getLayoutPosition();
                //设置点击状态的集合到rc的每个item的位置
                checkBoxStates.set(pos,isChecked);
            }
        });
    }

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

    class MyViewHolder extends RecyclerView.ViewHolder{
        TextView mTextView;
        CheckBox mCheckBox;
        public MyViewHolder(View itemView) {
            super(itemView);
            mTextView = (TextView) itemView.findViewById(R.id.tv_item);
            mCheckBox = (CheckBox) itemView.findViewById(R.id.cb_item);
        }
    }
}


主函数代码:

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.Toast;


/**
 * Created by dllo on 15/12/31.
 */
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
    private SecondRecyclerViewAdapter mAdapter;
    private RecyclerView mRecyclerView;


    //存放CheckBox的ID的数组



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        mRecyclerView = (RecyclerView) findViewById(R.id.rc_second);
        mAdapter = new SecondRecyclerViewAdapter(this);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setAdapter(mAdapter);
        findViewById(R.id.btn_second).setOnClickListener(this);
        findViewById(R.id.btn_all).setOnClickListener(this);
        findViewById(R.id.btn_null).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_second:
                Toast.makeText(this, mAdapter.getCheckedData()+ "", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_all:
                mAdapter.selectAll();
                break;
            case R.id.btn_null:
                mAdapter.selectNone();
                break;
        }
    }
}


展示效果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值