我一直在阅读有关回收listItem的文章和问题,而不是夸大一个成本高昂的新文章。特别是我读了this question并且我理解了答案,但我的问题是:当我们向下滚动列表时,一些listItems从顶部消失,它们应该被回收并再次显示在列表的底部。
android如何确定它们的位置?
当我们使用viewHolder = (ViewHolder)convertView.getTag;
时,viewHolder显然拥有想要回收的行,当我们使用viewHolder.txtName.setText(dataModel.getName());
设置View Elements时,我明白我们更新了那个特定viewHolder中的Elements,那么它是如何进行的列表的底部?
我发现这篇文章非常有用,但没有足够的解释和评论让我清楚回收。 Android ListView with Custom Adapter
答案 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的列表行位置,例如点击事件处理程序。
另见: