Java getView如何确定视图在列表中的位置
我一直在阅读有关回收列表项的文章和问题,而不是夸大一个昂贵的新列表项。特别是我读了,我理解了答案,但我的问题是:当我们向下滚动列表时,顶部的一些列表项会消失,它们应该循环使用,并再次显示在列表的底部 安卓如何确定它们的位置? 当我们使用Java getView如何确定视图在列表中的位置,java,android,listview,android-recyclerview,Java,Android,Listview,Android Recyclerview,我一直在阅读有关回收列表项的文章和问题,而不是夸大一个昂贵的新列表项。特别是我读了,我理解了答案,但我的问题是:当我们向下滚动列表时,顶部的一些列表项会消失,它们应该循环使用,并再次显示在列表的底部 安卓如何确定它们的位置? 当我们使用viewHolder=(viewHolder)convertView.getTag当我们使用viewHolder.txtName.setText(dataModel.getName())设置视图元素时,viewHolder显然持有要回收的行我知道我们更新了特定vi
viewHolder=(viewHolder)convertView.getTag代码>当我们使用viewHolder.txtName.setText(dataModel.getName())设置视图元素时,viewHolder显然持有要回收的行代码>我知道我们更新了特定viewHolder中的元素,那么它如何进入列表的底部
我发现这篇文章非常有用,但没有足够的解释和评论让我清楚地了解回收。
安卓如何确定它们的位置
ListView适配器(例如ArrayAdapter)具有ArrayAdapter.getView()
,RecyclerViews的等效适配器为RecyclerView.adapter.onBindViewHolder()
。它们在方法签名中都有一个位置
参数:
// ListView
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
}
// RecyclerView
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
...
}
这是已滚动到视图中的列表行位置
,需要绑定以填充数据
此外,RecyclerView.ViewHolder
对象具有方法getAdapterPosition()
,因此您可以在onCreateViewHolder()
和onBindViewHolder()
方法之外找到ViewHolder的列表行位置,例如在单击事件处理程序中
另见:
我知道pisition会传递给方法,但它是回收物品的位置?不是吗?如果该项目想再次使用,其位置需要更改,例如,转到列表底部。那么安卓会把它堆在列表的末尾吗?所以当安卓调用getView获取回收物品,我们设置并返回它时,安卓会把它放在列表的末尾吗?很抱歉,这让我有些困惑,我对android非常陌生,我感谢您的耐心。@MohsenFM当android调用getView()
时,它会将行放在所需的确切列表位置,而不是列表的末尾。当您向上或向下滚动列表且该行不在屏幕上时,稍后该行将被删除并被垃圾回收(“回收”)。但它的模板将被保留,这样新的列表行就可以以相同的设计滚动到视图中。但您必须始终为滚动到视图中的每个回收行填写数据,否则会出现旧数据或故障。