首页 > 系统 > Android > 正文

Android RecycleView使用(CheckBox全选、反选、单选)

2019-12-12 02:05:28
字体:
来源:转载
供稿:网友

本文实例为大家分享了CheckBox全选、反选、单选的具体代码,供大家参考,具体内容如下

MainActiivity

package com.bwie.day06;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import com.bwie.day06.myadapter.MyAdapter;public class MainActivity extends AppCompatActivity {  private MyAdapter myAdapter;  private LinearLayoutManager linearLayoutManager;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //初始化控件    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);    //在加载数据之前配置    linearLayoutManager = new LinearLayoutManager(this);    recyclerView.setLayoutManager(linearLayoutManager);    //创建一个适配器    myAdapter = new MyAdapter();    recyclerView.setAdapter(myAdapter);  }  public void btnAll(View view) {    myAdapter.All();  }  public void btnner(View view) {    myAdapter.neverall();  }}

Adapter

package com.bwie.day06.myadapter;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.TextView;import com.bwie.day06.R;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.Set;public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {  //这个是checkbox的Hashmap集合  private final HashMap<Integer, Boolean> map;  //这个是数据集合  private final ArrayList<String> list;  public MyAdapter() {    map = new HashMap<>();    list = new ArrayList<>();    for (int i = 0; i < 30; i++) {      //添加30条数据      list.add("这是条目" + i);      map.put(i, false);    }  }  /**   * 全选   */  public void All() {    Set<Map.Entry<Integer, Boolean>> entries = map.entrySet();    boolean shouldall = false;    for (Map.Entry<Integer, Boolean> entry : entries) {      Boolean value = entry.getValue();      if (!value) {        shouldall = true;        break;      }    }    for (Map.Entry<Integer, Boolean> entry : entries) {      entry.setValue(shouldall);    }    notifyDataSetChanged();  }  /**   * 反选   */  public void neverall() {    Set<Map.Entry<Integer, Boolean>> entries = map.entrySet();    for (Map.Entry<Integer, Boolean> entry : entries) {      entry.setValue(!entry.getValue());    }    notifyDataSetChanged();  }  /**   * 单选   *   * @param postion   */  public void singlesel(int postion) {    Set<Map.Entry<Integer, Boolean>> entries = map.entrySet();    for (Map.Entry<Integer, Boolean> entry : entries) {      entry.setValue(false);    }    map.put(postion, true);    notifyDataSetChanged();  }  //这里主要初始化布局控件  @Override  public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    RecyclerView.LayoutManager layoutManager = ((RecyclerView) parent).getLayoutManager();    //初始化布局文件    View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.check, parent, false);    return new MyViewHolder(inflate);  }  @Override  public void onBindViewHolder(final MyViewHolder holder, final int position) {    //放入集合中的值    holder.txt.setText(list.get(position));    holder.checkBox.setChecked(map.get(position));    holder.checkBox.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        map.put(position, !map.get(position));        //刷新适配器        notifyDataSetChanged();        //单选//        singlesel(position);      }    });  }  @Override  public int getItemCount() {    return list.size();  }  public class MyViewHolder extends RecyclerView.ViewHolder {    View itemView;    private TextView txt;    private CheckBox checkBox;    //初始化控件    public MyViewHolder(View itemView) {      super(itemView);      this.itemView = itemView;      txt = (TextView) itemView.findViewById(R.id.txt);      checkBox = (CheckBox) itemView.findViewById(R.id.cbox);    }  }}

main.xml

<LinearLayout  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:orientation="horizontal">  <Button    android:onClick="btnAll"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_weight="1"    android:text="全选" />  <Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_weight="1"    android:text="反选"    android:onClick="btnner"/></LinearLayout><android.support.v7.widget.RecyclerView  android:id="@+id/recyclerview"  android:layout_width="match_parent"  android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>

Check.xml

<CheckBox  android:id="@+id/cbox"  android:layout_width="wrap_content"  android:layout_height="wrap_content" /><TextView  android:text="dfdfdfdf"  android:id="@+id/txt"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:textSize="20sp" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表