【问题标题】:RecyclerView Adapter :OnBindViewHolderRecyclerView 适配器:OnBindViewHolder
【发布时间】:2016-04-08 03:43:19
【问题描述】:

为什么我们要使用这样的东西来用数据填充 recyclerview?我们不能像在 ListView 中那样创建一个简单的字符串数组,例如 String[]titles 并显示它们吗?

List< Information> data

public void onBindViewHolder(MyViewHolder holder, int position) {
    Information current = data.get(position);
    holder.title.setText(current.title);
    holder.icon.setImageResource(current.iconId);
}

我最近观看了一个关于如何使用 recyclerview 的视频,但我不明白为什么我们必须创建另一类信息,然后在 onBindViewHolder 内再次创建其数组以显示数据。

谁能帮我理解这段代码?

【问题讨论】:

  • 什么意思?您可以在ListView 中使用List&lt;&gt;ArrayList&lt;&gt;。事实上,这比非灵活数组更受欢迎。

标签: android material-design android-recyclerview android-viewholder


【解决方案1】:

如果您查看 google 的 this example,他们使用数组数据集填充 RecyclerView 中的数据。 看看谷歌的文档:

由 RecyclerView 调用,在指定位置显示数据。此方法应更新 itemView 的内容以反映给定位置的项目。

注意,与ListView不同的是,如果item在数据集中的位置发生变化,RecyclerView不会再次调用该方法,除非item本身失效或者无法确定新的位置。因此,您应该只在获取该方法内部的相关数据项时使用位置参数,而不应保留它的副本。如果您稍后需要某个项目的位置(例如在单击侦听器中),请使用 getAdapterPosition() 它将具有更新的适配器位置。如果 Adapter 可以处理有效的部分绑定,则覆盖 onBindViewHolder(ViewHolder, int, List)。

【讨论】:

    【解决方案2】:
    String [] title ; 
    int [] imageID;
    onBindViewHolder(MyViewHolder holder, int position) { 
     Information current = data.get(position); 
     holder.title.setText(title [position]); holder.icon.setImageResource(imageID     [position]); 
    }
    

    【讨论】:

    • 我可以请求您在您的答案周围添加更多上下文。仅代码的答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。
    • 下次会记得
    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多