首页
学习
活动
专区
工具
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

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

相关·内容

Android实现聊天界面

ViewHolder构造函数传入一个View参数,这个参数通常是RecyclerView子项最外层布局,这样我们就可以通过findViewById()方法来获取布局接收和发送消息布局实例了。...MsgAdapter也有一个构造函数,将要展示数据进来复制给mMsgList。...onCreateViewHolder()用于创建ViewHolder实例,在这个方法中将msg_item布局加载进来,然后创建一个ViewHolder实例,并把加载出来布局传到构造函数,返回实例。...onBindViewHolder()用于对RecyclerView子项数据进行赋值。...接着调用RecyclerViewscrollToPosition()方法,显示数据定位到最后一行,最后清空输入栏。 效果图: ? 以上就是本文全部内容,希望对大家学习有所帮助。

1.2K30

安卓开发——Recycleview

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

2.1K11

【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

65320

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)

39111

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

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

2.2K20

RecyclerView实现纵向和横向滚动

不是内置在系统SDK,所以需要把完整包路径写出来。...类,让这个类继承RecyclerView.Adapter,并将泛型指定为BookAdapter.ViewHolder; 里边自定义一个内部类ViewHolder,里边构造参数传入view参数,这个参数就是...RecyclerView最外层布局,这样就可以通过findViewById()来货渠道布局ImageView和TextView实例了; BookAdapter构造函数,这个方法吧要展示数据进来...,子类按照接口中规范来实现就可以定制出不同排雷方式布局了 //配置布局,默认为vertical(垂直布局),下边这句布局改为水平布局 //layoutManager.setOrientation...,子类按照接口中规范来实现就可以定制出不同排雷方式布局了 //配置布局,默认为vertical(垂直布局),下边这句布局改为水平布局 layoutManager.setOrientation

3.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.5K30

Android ListView与RecycleView对比使用解析

ListView,并为其定义一个id,方便我们之后调用,宽高与父控件相同 2.准备数据数据添加到ArrayAdapter适配器当中 3.在Activityjava文件中使用findviewbyid...,定义了一组String类型数组,之后创建ArrayAdapter适配器,注意String,是一个泛型,后面的构造函数参数分别为上下文android.R.Layout.simple_list_item...4.准备数据数据添加到第三步适配器类,之后与上面所说步骤一样,找到Listview实例,设置适配器 ? 效果 ?...ListView中所说T类,适配器泛型 3.定义一个适配器T类,使其继承RecyclerView.Adapter<T.ViewHolderViewHolder是T类一个内部类),需要一个构造方法接收数据源...onCreateViewHolder方法里面,首先就是通过LayoutInflater.from()方法接收一个context,之后,再通过inflateitem布局放进总布局,之后再将这个view

1.7K10

功能强大Android滚动控件RecyclerView

dependencies闭包中加入compile ‘com.android.support.recyclerview-v7:xx.x.x'(x是当前最新版本) 2.布局加入RecyclerView...因为AndroidRecyclerView定义在support库,想要使用该控件就必须要添加相应依赖库才可以。所以就有了第一步操作。...其中,ViewHolder是我们FruitAdapter定义一个内部类。...= FruitList; } //创建ViewHolder实例 // ①onCreateViewHolder()用于创建ViewHolder实例,并把加载布局传入到构造函数 @Override...最后步骤都是在MainActivity编写,咱们这里就不分开一一解释了,直接贴上代码,这样更能一目了然,每个代码都有注释,相信不难理解: 3.在MainActivity定义数据源 4定义适配器

96941
领券