getView如何确定列表

时间:2017-07-26 14:40:50

标签: java android listview android-recyclerview

我一直在阅读有关回收listItem的文章和问题,而不是夸大一个成本高昂的新文章。特别是我读了this question并且我理解了答案,但我的问题是:当我们向下滚动列表时,一些listItems从顶部消失,它们应该被回收并再次显示在列表的底部。

android如何确定它们的位置? 当我们使用viewHolder = (ViewHolder)convertView.getTag;时,viewHolder显然拥有想要回收的行,当我们使用viewHolder.txtName.setText(dataModel.getName());设置View Elements时,我明白我们更新了那个特定viewHolder中的Elements,那么它是如何进行的列表的底部?

我发现这篇文章非常有用,但没有足够的解释和评论让我清楚回收。 Android ListView with Custom Adapter

1 个答案:

答案 0 :(得分:1)

  

android如何确定它们的位置?

ListView适配器(例如ArrayAdapter)具有ArrayAdapter.getView(),而RecyclerViews的等效adpater为RecyclerView.Adapter.onBindViewHolder()。他们的方法签名中都包含 position 参数:

// ListView
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ...
}

// RecyclerView
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    ...
}

这是已滚动到视图中的列表行position,需要绑定以填充数据。

此外,RecyclerView.ViewHolder个对象的方法为getAdapterPosition(),因此您可以在onCreateViewHolder()onBindViewHolder()方法之外找到ViewHolder的列表行位置,例如点击事件处理程序。

另见: