RecyclerView适配器:OnBindViewHolder

时间:2016-01-04 13:50:22

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

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

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 中创建其数组以显示数据。

有人可以帮我理解这段代码吗?

2 个答案:

答案 0 :(得分:2)

如果您通过google查看this example,他们会使用数据集来填充RecyclerView中的数据。 看一下Google的文档:

  

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

     

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

答案 1 :(得分:0)

String [] title ; 
int [] imageID;
onBindViewHolder(MyViewHolder holder, int position) { 
 Information current = data.get(position); 
 holder.title.setText(title [position]); holder.icon.setImageResource(imageID     [position]); 
}