首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android -将数据传递给onCreateViewHolder(..)中的ViewHolder构造函数

Android中,将数据传递给onCreateViewHolder(..)中的ViewHolder构造函数是为了在RecyclerView中显示数据。RecyclerView是Android提供的用于展示大量数据的控件,它通过ViewHolder来管理每个列表项的视图。

在RecyclerView中,ViewHolder是一个用于保存列表项视图的容器。当RecyclerView需要显示新的列表项时,会调用onCreateViewHolder()方法来创建ViewHolder对象,并将列表项的视图传递给ViewHolder的构造函数。

为了在ViewHolder中显示数据,我们可以通过在ViewHolder的构造函数中传递数据参数的方式,将数据传递给ViewHolder。这样,在ViewHolder中就可以通过数据参数来设置列表项视图的内容。

以下是一个示例代码,展示如何将数据传递给ViewHolder构造函数:

代码语言:java
复制
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private List<String> data;

    public MyAdapter(List<String> data) {
        this.data = data;
    }

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

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        holder.bindData(position);
    }

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

    public static class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView textView;
        private List<String> data;

        public MyViewHolder(@NonNull View itemView, List<String> data) {
            super(itemView);
            this.data = data;
            textView = itemView.findViewById(R.id.text_view);
        }

        public void bindData(int position) {
            String item = data.get(position);
            textView.setText(item);
        }
    }
}

在上述代码中,MyAdapter是RecyclerView的适配器,它接收一个数据列表作为参数。在onCreateViewHolder()方法中,我们将数据列表传递给MyViewHolder的构造函数。在MyViewHolder中,通过bindData()方法将数据绑定到列表项视图的TextView上。

这样,当RecyclerView需要显示新的列表项时,会创建一个新的MyViewHolder对象,并将数据列表传递给它。然后,通过bindData()方法将对应位置的数据绑定到列表项视图上,实现数据的显示。

推荐的腾讯云相关产品:腾讯云移动推送(https://cloud.tencent.com/product/tpns

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 安卓开发——Recycleview

    我们这样思考,当我们去完成一个界面的布局时,我们要向里面传数据,怎么去传呢?全写在xml文件里显而不合适,这就是Adapter的作用。...② 创建ViewHolder:在Adapter中创建一个继承RecyclerView.ViewHolder的静态内部类。...③ 在Adapter中实现3个方法: onCreateViewHolder() 这个方法主要生成为每个Item inflater出一个View,但是该方法返回的是一个ViewHolder。...在这里,补充一个知识点,关于RecyclerView的调用顺序总是按照: 获取大小——>绑定布局——>加载ViewHolder类——>绑定数据 这样一个规律的,通过这样的规律,我们就能知道是按照怎样的顺序来调用这些重载函数的了...>,adapter中必须实现3个方法: ① onCreateViewHolder 初始化要加载的布局 ② onBindViewHolder 来加载数据 ③ getItemCount 得到数据源的大小 3

    2.2K11

    【Jetpack】DataBinding 架构组件 ⑥ ( RecyclerView 数据绑定 )

    类 , 在其中维护 item.xml 布局文件 对应的 ItemBinding 数据绑定类实例对象 , 在构造函数中设置改 ItemBinding 对象 ; class MyViewHolder...onCreateViewHolder 函数中 , 获取 DataBinding 布局 , 并将其设置给 自定义的 RecyclerView.ViewHolder 对象 ; 获取 DataBinding...布局设置给自定义 RecyclerView.ViewHolder 实例 : 将上面创建的 ItemBinding 对象通过 构造函数设置到 MyViewHolder 中 ; override...类中重写的 onBindViewHolder 函数中 , 为每个列表条目设置数据 ; 先通过参数中的 MyViewHolder 对象获取其中的 ItemBinding 数据绑定布局对象 ; 之后为 holder.itemBinding...中 , 调用 DataBindingUtil.inflate 函数加载布局 , 并设通过构造函数设置给 MyViewHolder ; 数据类 package kim.hsl.databinding_demo

    76020

    RecycleView从0到0.1 | 技术创作特训营第一期

    holder; } //通过方法提供的ViewHolder,将数据绑定到ViewHolder中 @Override public void onBindViewHolder...可以看到该适配器类主要有3个方法和1个自定义ViewHolder组成:onCreateViewHolder: 创建ViewHolder并返回,后续item布局里控件都是从ViewHolder中取出。...onBindViewHolder: 通过方法提供的ViewHolder,将数据绑定到ViewHolder中。getItemCount: 获取数据源总的条数。...MyHolder : 这是RecyclerView.ViewHolder的实现类,用于初始化item布局中的子控件。需要注意的是,在这个类的构造方法中需要传递item布局的View给父类 。...,将数据绑定到ViewHolder中 @Override public void onBindViewHolder(final MyHolder holder, int position)

    44411

    Android开发之漫漫长途 XV——RecyclerView

    该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!...* * 可以看出,RecyclerView将ListView中getView()的功能拆分成了onCreateViewHolder()和onBindViewHolder()。...,实现的方法有很多种,也比较容易,本例中采用在Adapter中BindViewHolder绑定数据的时候为item设置了点击事件。...,构造函数中获得系统属性android:listDivider,该属性是一个Drawable对象。...RecyclerView与ListView 缓存机制对比分析 ListView和RecyclerView最大的区别在于数据源改变时的缓存的处理逻辑,ListView是”一锅端”,将所有的mActiveViews

    2.3K20

    【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )

    XxxBinding.inflate( LayoutInflater ) 与界面绑定 : 这种方式加载的布局与界面关联性不大 , 需要调用额外的函数 , 将视图绑定类与界面进行绑定 , Activity...kim.hsl.vb.databinding.MyViewBinding; public class ViewBindingView extends LinearLayout { /** * 在代码中创建组件调用该构造函数...this 就是 ViewGroup 类型的 , 即组件本身 , 调用上述方法 , 可以将两个操作都完成 ; ③ 自定义 ViewHolder 构造函数 : public ViewHolder(ItemBinding...binding) 传入视图绑定类 , 在构造函数中使用视图绑定类初始化 ViewHolder 中的组件 , 注意别忘了先调用父类的方法 ; class Adapter extends RecyclerView.Adapter...extends RecyclerView.ViewHolder{ TextView textView; /** * 自定义的构造函数

    1.6K30

    从0系统学Android--3.6 RecyclerView

    首先在内部定义了一个类 ViewHolder 这个类是继承自 RecyclerView.ViewHolder 的,在构造方法中需要传入一个 View 参数,这个参数就是我们 RecyclerView 的子项的最外层的布局...FruitAdapter2 也有一个构造方法,需要传入用于展示的数据源,后续在这个数据源的基础上进行。...() onCreateViewHolder() 从方法名也很容易可以得出,是用来创建 ViewHolder 的,把此方法内创建的 ViewHolder 通过 return 返回。...然后创建了适配器,将数据传入到适配器中,调用 RecyclerView 的 setAdapter 来完成适配器设置,让 RecyclerView 和 数据产生联系。...通过 ViewHolder 的 getAdapaterPositon() 我们就清楚的指定我们点击的 View 在 Adapter 中的位置了。

    85420

    Jetpack 系列之Paging3,看这一篇就够了~

    ,这里的意思就是 我们传Int类型的值(如页码)得到返回的数据信息DemoReqData对象。...,当网络不好的时候,可以考到页面的框架,从而提升用户体验 还有一些其他参数这里就不一一介绍了,从构造方法的源码中可以看出pageSize这个参数是必填的,其他的是可选项,所以我们这里传了1 定义RecycleViewAdapter...当然对于这个接口不需要传pageSize,所以返回的数据大小并不会受pageSize的影响,如此一来,我们就使用Paging3 完成了简单的数据分页请求。...,所以我们要将adapter中的parent当做参数传过来,retry()是一个高阶函数,便于点击重试后,在adapter中做重试逻辑。...,所以避免在将viewModel注入到adapter,我们直接使用一个高阶函数回调即可。

    2K20

    Jetpack 系列之Paging3,看这一篇就够了~

    ,这里的意思就是 我们传Int类型的值(如页码)得到返回的数据信息DemoReqData对象。...,当网络不好的时候,可以考到页面的框架,从而提升用户体验 还有一些其他参数这里就不一一介绍了,从构造方法的源码中可以看出pageSize这个参数是必填的,其他的是可选项,所以我们这里传了1 定义RecycleViewAdapter...当然对于这个接口不需要传pageSize,所以返回的数据大小并不会受pageSize的影响,如此一来,我们就使用Paging3 完成了简单的数据分页请求。...,所以我们要将adapter中的parent当做参数传过来,retry()是一个高阶函数,便于点击重试后,在adapter中做重试逻辑。...,所以避免在将viewModel注入到adapter,我们直接使用一个高阶函数回调即可。

    3.5K10

    RecyclerView实现混合布局

    我们可以看到,这个RecyclerView中有多种item显示出来,那么具体怎么实现呢,其实在RecyclerView中,我们可以重写方法getItemViewType(),这个方法会传进一个参数position...RecyclerView.AdapterViewHolder>   a:getItemViewType返回type值   b:onCreateViewHolder加载不同的视图...  c:onBindViewHolder绑定数据 5:主文件中设置recyclerview的布局样式,赋值调试  1:Item  xml布局文件和Bean类,ViewHolder创建。..., 方法: 你可以写多个list来存放不同的数据,但是如果是多个的话,返回的数据就一串字符串,你不仅要挑出来,还要存放在多个list里面,下次下拉刷新时还要在多个list中累加数据,这样就有点麻烦了 不挑出来直接就只判断...type,然后根据type去调用不同的layout,然后在绑定数据的方法中再次判断是不是自己想要的ViewHolder,最后赋值显示。

    2.3K20
    领券