android - 从 Fragment 中的适配器(recyclerview)获取所有项目

标签 android android-fragments checkbox fragment android-recyclerview

您好,我在从 fragment 中的适配器获取所有项目时遇到问题。更具体地说,我将 ScaleInAnimatorAdapter 与我的客户适配器一起使用,当我尝试从下面发布的代码中获取我的复选框项目时,在我的 fragment 中,我似乎只获得屏幕上的可见项目。

private View.OnClickListener onAllClick = new View.OnClickListener() {
    @Override public void onClick(View v) {
        int count = listAdapter.getItemCount();

        for (int i = 0; i < count; i++) {
            View mChild = listTopics.getChildAt(i);

            if( mChild != null ) {
                Log.d(TAG,"getItemCount(): " + i );

                CheckBox cBox = (CheckBox)mChild.findViewById(R.id.topic_chk);
                cBox.setChecked(((CheckBox) v).isChecked());
                Log.d(TAG,"isChecked" + cBox.getTag());
                cBox.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(((CheckBox) v).isChecked()) {
                            checkboxAll.setChecked(false);
                        }
                    }
                });
            }
        }
    }
};

本质上,我正在尝试从 fragment 创建一个检查所有功能,以便当单击此功能时,会检查适配器中的所有复选框项目。我得到了与我提供的代码一起使用的功能,但主要问题是我只能在屏幕上看到项目,因此当我滚动到其他项目时,它们不会被检查。因此我想知道是否有更好的方法或其他方法让我获得所有元素

最佳答案

适配器旨在将底层数据存储绑定(bind)到 View ;它们通常不应该用于存储数据本身(除了用于 View 绑定(bind)目的的数据副本),也不应该对数据执行操作。

相反,您应该修改基础数据,然后通过您已经使用的任何机制更新适配器。 (加载器、带有notifyDataItemChanged 的​​自定义 setter 等)。

关于android - 从 Fragment 中的适配器(recyclerview)获取所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37618458/

相关文章:

c# - 为什么 CheckBox.IsChecked 属性为 Nullable<bool>?

php - 删除带有复选框的表单不起作用

单击按钮时 Android 布局高度未更新

java - Libgdx 加速度计不工作?

Angular 2 - 复选框不同步

Fragment 中的 Android TabHost

java - Android addToBackStack(null) 不起作用,关闭应用程序

android - 覆盖到 GridView 上

android - WheelView 未填充父项

android - 如何从另一个 fragment 打开一个新 fragment ?