Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getView如何确定视图在列表中的位置_Java_Android_Listview_Android Recyclerview - Fatal编程技术网

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()
时,它会将行放在所需的确切列表位置,而不是列表的末尾。当您向上或向下滚动列表且该行不在屏幕上时,稍后该行将被删除并被垃圾回收(“回收”)。但它的模板将被保留,这样新的列表行就可以以相同的设计滚动到视图中。但您必须始终为滚动到视图中的每个回收行填写数据,否则会出现旧数据或故障。