Android使用RecyclerView实现列表数据选择操作-创新互联

这些时间做安卓盒子项目,因为安卓电视的显示器比较大,所以一个界面显示 很多数据 ,最多的时候,一个Actvity中用到了好几个RecyclerView。

创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目网站制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元杂多做网站,已为上家服务,为杂多各地企业和个人服务,联系电话:18982081108

在RecyclerView中实现Item选中处理时,发现用CheckBox的OnCheckedChangeListener监听事件时,会达不到预期,所以用了OnClickListener来实现。

主界面代码:

public class CheckRecyclerViewActivity extends AppCompatActivity implements CheckAdapter.CheckItemListener {
  //适配器
  private CheckAdapter mCheckAdapter;
  //列表
  private RecyclerView check_rcy;
  //全选操作
  private CheckBox check_all_cb;
  //列表数据
  private List dataArray;
  //选中后的数据
  private List checkedList;
  private boolean isSelectAll;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_check_recyclerview);
    checkedList = new ArrayList<>();
    initDatas();
    initViews();
  }

  private void initViews() {
    check_rcy = (RecyclerView) findViewById(R.id.check_rcy);
    check_all_cb = (CheckBox) findViewById(R.id.check_all_cb);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
    check_rcy.setLayoutManager(linearLayoutManager);
    mCheckAdapter = new CheckAdapter(this, dataArray, this);
    check_rcy.setAdapter(mCheckAdapter);
    //如果使用CheckBox的OnCheckedChangeListener事件,则选中事件会有一些意想不到的结果,欢迎体验
    //在列表Item中的CheckBox也一样的效果
    check_all_cb.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        isSelectAll = !isSelectAll;
        checkedList.clear();
        if (isSelectAll) {//全选处理
          checkedList.addAll(dataArray);
        }
        for (CheckBean checkBean : dataArray) {
          checkBean.setChecked(isSelectAll);
        }
        mCheckAdapter.notifyDataSetChanged();
      }
    });
  }

  private void initDatas() {
    dataArray = new ArrayList<>();
    for (int i = 0; i < 20; i++) {
      CheckBean bean = new CheckBean();
      bean.setOrder(String.valueOf(i + 1));
      bean.setName("名称_" + i);
      bean.setContent("第" + i + "条内容");
      bean.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
      dataArray.add(bean);
    }
  }

  @Override
  public void itemChecked(CheckBean checkBean, boolean isChecked) {
    //处理Item点击选中回调事件
    if (isChecked) {
      //选中处理
      if (!checkedList.contains(checkBean)) {
        checkedList.add(checkBean);
      }
    } else {
      //未选中处理
      if (checkedList.contains(checkBean)) {
        checkedList.remove(checkBean);
      }
    }
    //判断列表数据是否全部选中
    if (checkedList.size() == dataArray.size()) {
      check_all_cb.setChecked(true);
    } else {
      check_all_cb.setChecked(false);
    }
  }
}




标题名称:Android使用RecyclerView实现列表数据选择操作-创新互联
URL分享:http://pwwzsj.com/article/hdhdd.html