如何迭代 RecyclerView 项目

2024-05-08

在我的应用程序中,我有一个带有简单项目视图的 RecyclerView,该视图由每行中的 TextView 和 Spinner 组成。

用户从操作栏中单击“保存”后,我需要迭代所有项目并获取 Spinner 选择的值。

有什么想法可以或应该如何实现这一目标?

UPDATE:

我已经设法使用以下循环进行迭代,但是为每一行调用 findViewById() 是一个很好的解决方案吗,因为它是一个调用性能明智的繁重函数?

for (int i = 0; i < rvAttendanceItems.getChildCount(); i++) {
    Spinner spinner = (Spinner) rvAttendanceItems.findViewHolderForAdapterPosition(i).itemView.findViewById(R.id.attendance_list_status);
    spinner.getSelectedItemId();
}

我的完整 RecyclerView 代码:

public class AttendanceAdapter extends RecyclerView.Adapter<AttendanceAdapter.AttendanceViewHolder> {

    private List<Student> studentItems;
    private Fragment frag;
    ArrayList<Status> statuses = new ArrayList<>();

    public AttendanceAdapter(List<Student> studentItems, Fragment frag) {
        this.studentItems = studentItems;
        this.frag = frag;

        DbHelper db = DbHelper.getInstance(frag.getContext());
        Cursor c = db.getStatuses("attendance");

        if (c != null) {
            while (c.moveToNext()) {
                Status tempStatus = new Status(c.getInt(c.getColumnIndex(DbHelper.STATUS_ID)), c.getInt(c.getColumnIndex(DbHelper.STATUS_COLOR)), c.getString(c.getColumnIndex(DbHelper.STATUS_DESC)), c.getString(c.getColumnIndex(DbHelper.STATUS_CATEGORY)));
                statuses.add(tempStatus);
            }
            c.close();
        } else {
            Toast.makeText(frag.getContext(), "Could not retrieve status list", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public AttendanceViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_attendance, parent, false);
        return new AttendanceViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(final AttendanceViewHolder holder, int position) {

        final Student current = studentItems.get(position);

        SpinnerAdapter adapter = new SpinnerAdapter(frag.getContext(), R.layout.item_spinner_status, statuses);

        holder.sStatus.setAdapter(adapter);
        holder.tvName.setText(current.getFullName());
    }

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

    public class AttendanceViewHolder extends RecyclerView.ViewHolder {

        private final TextView tvName;
        private final Spinner sStatus;

        public AttendanceViewHolder(View itemView) {
            super(itemView);

            tvName = (TextView) itemView.findViewById(R.id.attendance_list_name);
            sStatus = (Spinner) itemView.findViewById(R.id.attendance_list_status);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    sStatus.performClick();
                }
            });
        }
    }
}

您已经拨打了电话findViewById()在视图持有者中,不需要再次创建:

for (int i = 0; i < rvAttendanceItems.getChildCount(); i++) {
    AttendanceViewHolder holder = (AttendanceViewHolder) rv.findViewHolderForAdapterPosition(i);
    holder.sStatus.getSelectedItemId();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何迭代 RecyclerView 项目 的相关文章

  • 通过观察ViewModel在RecyclerView中搜索PagedList的LiveData

    使用 android Paging 库 可以很容易地从数据库中分块加载数据 并且 ViewModel 提供自动 UI 更新和数据保存 所有这些框架模块帮助我们在 Android 平台上创建一个出色的应用程序 典型的 Android 应用程序
  • 如何突出显示Recycler View中选定的Item?

    我有一个回收站视图 其中包含从内部存储加载的图像 我想在单击时突出显示所选项目 我尝试了很多东西但没有成功 实际上 我需要的是 当我单击回收器视图中的任何项目时 该项目必须进入我的ArrayList 并且它也应该突出显示 并且当我单击或取消
  • 如果滚动位置为 0,ViewPager2 中的片段不会响应点击

    我很高兴谷歌发布了ViewPager2 https developer android com jetpack androidx releases viewpager2它基于 RecyclerView 构建 解决了旧 ViewPager 存
  • Horizo​​ntalScrollView 中带有 RecyclerView 的 2D 列表

    我正在尝试构建一个视图 允许用户水平和垂直滚动类似 Excel 的结构 我最初的想法是将 RecyclerView 带有 LinearManager 放入 Horizo ntalScrollView 中 但这似乎不起作用 这是我的代码
  • 如何将TabLayout与Recyclerview同步?

    我有一个TabLayout with Recyclerview这样当单击选项卡时Recyclerview滚动到特定位置 我也想要相反的过程 这样当Recyclerview滚动到特定位置 然后该特定选项卡会突出显示 例如 如果有 4 个选项卡
  • 如何在RecyclerView中实现setOnScrollListener

    当用户到达列表中可见的项目时 如何在底部显示进度栏 我已经编写了一个代码 其中我使用网络服务获取数据 现在我想填充部分记录 因为我有大约630 条记录在我的 JSON 中 这是我用来从 JSON 获取数据并填充到 RecyclerView
  • 浮动操作按钮与最后一个卡片视图中的复选框重叠

    我有一个布局文件 其中包含 RecyclerView 和 FloatingActionButton 在里面我有多个 CardView 主要布局文件
  • FirebaseIndexRecyclerAdapter onDataChanged 被调用但 getItemCount() 始终返回 0

    我在用着FirebaseIndexRecyclerAdapter https github com firebase FirebaseUI Android blob master database src main java com fir
  • 如何迭代 RecyclerView 项目

    在我的应用程序中 我有一个带有简单项目视图的 RecyclerView 该视图由每行中的 TextView 和 Spinner 组成 用户从操作栏中单击 保存 后 我需要迭代所有项目并获取 Spinner 选择的值 有什么想法可以或应该如何
  • 如何使用 Kotlin 在 ListAdapter 中使用 Filterable?

    我会用一个SearchView过滤我的RecyclerView 在 stackoverflow 和其他网站上我发现只是使用的示例Filterable与 Java 和RecyclerView Adapter当我使用时ListAdapter 所
  • 如何使用RecyclerView.State保存RecyclerView滚动位置?

    我有一个关于 Android 的问题RecyclerView State http developer android com reference android support v7 widget RecyclerView State h
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • 使 Recyclerview 固定高度并可滚动

    已解决以下检查答案 所以我试图为我的 Android 应用程序创建评论功能 我想在 recyclerview 中显示评论 然后在 recyclerview 下方有一个按钮和文本视图来添加评论 我想让 recyclerview 具有一定的高度
  • RecyclerView 未显示列表中的所有项目

    我在用RecyclerView在我的应用程序中 每次我打开屏幕时 我只能看到一项 但当我调试时 它每次都会出现onBindViewHolder method 这是我的适配器 Override public ViewHolder onCrea
  • 检测对项目外部 RecyclerView 的点击

    我有一个 RecyclerView 其中有 2 个项目没有填满整个屏幕 如何检测用户单击了 RecyclerView 的空白部分 意味着直接单击了 RecyclerView 而不是其项目之一 正如评论中提到的 mRecyclerView a
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 用户的 RecyclerView 为空

    我试图使用 Firebase 实时数据库在 RecyclerView 中向用户显示主键 但每次我尝试 RecyclerView 都是空的 我尝试了很多教程 但似乎没有任何帮助 这是我的数据库的样子 这是我使用 RecyclerView 的类
  • RecyclerView 上的删除按钮删除了错误的项目

    我正在使用 Firestore 适配器RecyclerView我在使用 删除 按钮时遇到问题 当我按下它时 它会删除错误的项目 而不是我想要的项目 这是我的按钮内部的代码onBindViewHolder protected void onB
  • RecyclerView 仅在某些项目之间添加分隔线

    我想在我的中添加分隔线RecyclerView Layout 我已经搜索了一段时间 但我只能找到利用的解决方案RecyclerView addItemDecoration 这会在所有项目之间添加分隔线 我可以创建一个只有一行的布局并将其添加
  • 更改适配器数据时,RecyclerView 滚动到顶部位置

    我正在对某个帖子进行喜欢和不喜欢RecyclerView 我在更改视图后调用api 但问题是RecyclerView当我通知它更新时 总是滚动到顶部 这是我的适配器代码 likeAnim setOnLikeListener object O

随机推荐