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
体系结构要好得多,并且减少了其
适配器的责任,使其只做以其命名的事情。