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; } } }
展示效果: