RecyclerView - 我怎么能得到一个参考,以各行的看法 [英] RecyclerView - how can I get a reference to each row's View
问题描述
我使用的是新的 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屋!