Android RecyclerView-如何获取对每行的引用';s观点
我正在使用新的Android RecyclerView-如何获取对每行的引用';s观点,android,android-recyclerview,Android,Android Recyclerview,我正在使用新的RecyclerView替换现有的ListView,遇到了以下问题:在旧的BaseAdapter中,我可以创建一个“飞入”动画只需将此动画应用于convertView并在SparseBooleanArray中注意已显示动画的位置,即可为适配器内的每个项目创建动画 替换了getView()的onBindViewHolder()方法不提供对任何视图的访问,新的ItemAnimator也不提供访问。基本上,我需要访问我的ViewHolder的根视图,以将我自己的动画应用于每个项目 有什么
RecyclerView
替换现有的ListView
,遇到了以下问题:在旧的BaseAdapter
中,我可以创建一个“飞入”动画
只需将此动画
应用于convertView
并在SparseBooleanArray
中注意已显示动画
的位置,即可为适配器内的每个项目创建动画
替换了getView()
的onBindViewHolder()
方法不提供对任何视图的访问,新的ItemAnimator
也不提供访问。基本上,我需要访问我的ViewHolder的根视图
,以将我自己的动画
应用于每个项目
有什么办法吗?由RecyclerView
使用的每个视图持有者必须子类化RecyclerView.ViewHolder
,该类有一个名为itemView
的公共字段,其中包含与视图持有者相关联的视图
final View view = viewHolder.itemView;
但总的来说:动画在RecyclerView
中的工作方式不同。基本上,您可以在一个名为itemaniator
的单独类中实现它们:
mRecyclerView.setItemAnimator(new RecyclerView.ItemAnimator() {
@Override
public void runPendingAnimations() {
}
@Override
public boolean animateRemove(RecyclerView.ViewHolder viewHolder) {
return false;
}
@Override
public boolean animateAdd(RecyclerView.ViewHolder viewHolder) {
return false;
}
@Override
public boolean animateMove(RecyclerView.ViewHolder viewHolder, int i, int i2, int i3, int i4) {
return false;
}
@Override
public boolean animateChange(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2, int i, int i2, int i3, int i4) {
return false;
}
@Override
public void endAnimation(RecyclerView.ViewHolder viewHolder) {
}
@Override
public void endAnimations() {
}
@Override
public boolean isRunning() {
return false;
}
});
在所有这些回调中,您可以通过公共字段访问视图
实例,如上所述。与以前的适配器不同,RecyclerView.Adapter
实际上只负责RecyclerView
中的数据
您还可以查看哪些已经实现了一些不同的itemaniators
有关更多信息,请参阅文档 哇!!从不知道itemView
。非常有用的帖子+1如果viewHolder有一个getAttachedView方法(或类似的方法)会更好,因为我们所有人都在寻找合适的方法,而不是公共字段。也许谷歌做出这一决定是因为它在recycleview适配器中提供了更高的性能。但是,如果您想访问viewholder对象“RecyclerView.Adapter实际上只负责RecyclerView中的数据”中的视图,那么这就是正确答案。。。这可能是理论,但在实践中,适配器会膨胀并填充项中的所有视图。所以它也对这些观点负责。@GregEnnis当然。这就是为什么它被称为适配器
,它本质上是将您的数据转换为视图
s,从而可以实际显示。我的意思是,这就是回收视图的适配器所能做的一切。这与列表视图的适配器
形成对比,后者主要负责列表视图
中发生的一切。RecyclerView
体系结构要好得多,并且减少了其适配器的责任,使其只做以其命名的事情。