RecyclerView - 我怎么能得到一个参考,以各行的看法 [英] RecyclerView - how can I get a reference to each row's View

查看:221
本文介绍了RecyclerView - 我怎么能得到一个参考,以各行的看法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是新的 RecyclerView 来取代我现有的列表视图跑进了以下问题:在老 BaseAdapter ,我可以创建一个飞的动画适配器内部的每一个项目,只需将这个动画 convertView ,并注意到在 SparseBooleanArray 的哪个位置在动画已显示。

I'm using the new RecyclerView to replace my existing ListViews and ran into the following problem: in the old BaseAdapter, I could create a "fly-in" Animation for each item inside the adapter by simply applying this Animation to the convertView and noticing in a SparseBooleanArray for which position the Animation was already shown.

onBindViewHolder()方法,该方法已取代 getView()不能访问任何浏览,也没有新的 ItemAnimator 。基本上,我需要访问根查看我的 ViewHolder 来申请自己的动画到每个项目。

The onBindViewHolder() method which has replaced getView() doesn't provide access to any Views, nor does the new ItemAnimator. Basically I would need to access the root View of my ViewHolder to apply my own Animation to each item.

任何想法怎么办呢?

推荐答案

使用的 RecyclerView 有子类 RecyclerView.ViewHolder <每个视图架/ code>键,这个类有一个public字段名为 ItemView控件包含查看与<$相关C $ C> ViewHolder

final View view = viewHolder.itemView;

但就一般:动画的工作方式不同,在 RecyclerView 。从本质上讲,你在一个单独的类称为实现它们 ItemAnimator

But just in general: Animations work differently in the RecyclerView. Essentially you implement them in a separate class called ItemAnimator:

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 不像previous 适配器实际上只是负责在<$ C $数据C> RecyclerView 。

In all those callbacks you can access the View instance through the public field as I explained above. The RecyclerView.Adapter unlike the previous Adapters is really just responsible for the data in the RecyclerView.

您也可以看看 在GitHub上这个库 它已经实现了几个不同的 ItemAnimators

请参阅文档的详细信息!

Please see the documentation for more information!

这篇关于RecyclerView - 我怎么能得到一个参考,以各行的看法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆