您的位置:首页 > 移动开发 > Android开发

Android全选删除CheckBox的简单使用

2017-03-23 20:44 295 查看
main activity:

public class RecordActivity extends AppCompatActivity {
@BindView(R.id.activity_item_record_recyclerview)
RecyclerView recyclerView;
@BindView(R.id.record_all_check)
CheckBox allcheck;
@BindView(R.id.record_btn_delete)
Button delete;
@BindView(R.id.record_btn_submit)
Button submit;
@BindView(R.id.record_all_ll)
LinearLayout ll_btn;

ItemAdapter adapter;
RecyclerView.LayoutManager manager;
ArrayList<ActionData> list;
private String actionName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_record);
ButterKnife.bind(this);

manager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);

adapter = new ItemAdapter(list);

recyclerView.setAdapter(adapter);

setAllcheck();
}

private void setAllcheck(){
allcheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
for (int i = 0; i < list.size(); i++) {
if (!list.get(i).isCheck()){
list.get(i).setCheck(true);
}
}
}else {
//当全选的时候在取消全不选
if (getChechedSum()== list.size()){
for (int i = 0; i < list.size(); i++) {
if (list.get(i).isCheck()){
list.get(i).setCheck(false);
}
}
}
}
UpdateRecyclerView();
}
});
adapter.setChecked(new ItemAdapter.onChecked() {
@Override
public void CheckedChanged(int position, boolean isChecked) {
//保存选择状态
list.get(position).setCheck(isChecked);
//全选了才是设全选按钮为选择
if (getChechedSum()== list.size()){
allcheck.setChecked(true);
}else{
//选择了才取消
if (allcheck.isChecked()){
allcheck.setChecked(false);
}
}
UpdateRecyclerView();
}
});
}
/*
*解决Recycleyview刷新报错问题
*/
private void UpdateRecyclerView() {
Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
adapter.notifyDataSetChanged();
}
};
handler.post(r);
}

/**
* 计算选择的数目
* @return
*/
private int getChechedSum(){
int checkNum = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).isCheck()){
checkNum++;
}
}
return checkNum;
}

@Override
protected void onPause() {
super.onPause();
//不可见状态时刷新界面
for (int i = 0; i < list.size(); i++) {
if (list.get(i).isCheck()){
list.get(i).setCheck(false);
}
}
//选择了才取消
if (allcheck.isChecked()){
allcheck.setChecked(false);
}
UpdateRecyclerView();
}
}


adpter:
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.MyHolder>{
private ArrayList<ActionData> list;
private onChecked checked;

public void setChecked(onChecked checked) {
this.checked = checked;
}

public ItemAdapter(ArrayList<ActionData> list){
this.list = list;
}
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.record_list,parent,false);
MyHolder holder = new MyHolder(view);
return holder;
}

@Override
public void onBindViewHolder(final MyHolder holder, final int position) {
if (list.get(position).getFileName().contains(".txt")){
holder.record_icon.setImageResource(R.drawable.txt);
}else {
holder.record_icon.setImageResource(R.drawable.direct);
}
holder.record_name.setText(list.get(position).getFileName());
holder.record_size.setText(ClearData.getFormatSize((double) list.get(position).getFileSize()));

if (list.get(position).isCheck()){
holder.record_check.setChecked(true);
}else {
holder.record_check.setChecked(false);
}

//获取选择状态
holder.record_check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checked.CheckedChanged(position,isChecked);
}
});

//长按编辑
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//设置编辑可见

return true; //返回true时不响应短按事件
}
});
//短按查看
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String path = list.get(position).getActionName()+"/"+list.get(position).getFileName();
if (list.get(position).getFileName().contains(".txt")){
ItemActivity.getFilesinfo(path);
Intent intent = new Intent(v.getContext(),ReadActivity.class);
intent.putExtra("file_name",path);
v.getContext().startActivity(intent);
}else {
ItemActivity.getFilesinfo(path);
Intent intent = new Intent(v.getContext(),RecordActivity.class);
intent.putExtra("record_name",path);
v.getContext().startActivity(intent);
}

}
});
}

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

protected static class MyHolder extends RecyclerView.ViewHolder{
@BindView(R.id.record_one_icon)
ImageView record_icon;
@BindView(R.id.record_one_name)
TextView record_name;
@BindView(R.id.record_one_gathersize)
TextView record_size;
@BindView(R.id.record_one_check)
CheckBox record_check;
public MyHolder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
public static interface onChecked{
//选择点击事件回调
public void CheckedChanged(int position, boolean isChecked);

}
}


data:
public class ActionData extends DataSupport {
private String actionName;
private String gatherTime;
private String fileName;
private float fileSize;
private boolean isCheck;
public ActionData(){

}

public String getActionName() {
return actionName;
}

public void setActionName(String actionName) {
this.actionName = actionName;
}

public String getGatherTime() {
return gatherTime;
}

public void setGatherTime(String gatherTime) {
this.gatherTime = gatherTime;
}

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public float getFileSize() {
return fileSize;
}

public void setFileSize(float fileSize) {
this.fileSize = fileSize;
}

public boolean isCheck() {
return isCheck;
}

public void setCheck(boolean check) {
isCheck = check;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐