gpt4 book ai didi

android - RecyclerView - 如何获得对每一行 View 的引用

转载 作者:太空狗 更新时间:2023-10-29 15:36:06 24 4
gpt4 key购买 nike

我正在使用新的 RecyclerView 替换现有的 ListViews 并遇到以下问题:在旧的 BaseAdapter 中,我可以通过简单地将此 Animation 应用到 convertView 并在 中注意,为适配器内的每个项目创建一个“飞入”Animation SparseBooleanArray 已显示 Animation 的位置。

取代 getView()onBindViewHolder() 方法不提供对任何 Views 的访问,新的 也不提供>ItemAnimator。基本上我需要访问我的 ViewHolder 的根 View 以将我自己的 Animation 应用到每个项目。

有什么想法吗?

最佳答案

RecyclerView 使用的每个 View 持有者都必须继承 RecyclerView.ViewHolder 并且这个类有一个名为 itemView 的公共(public)字段,其中包含 ViewViewHolder 关联。

final View view = viewHolder.itemView;

但总的来说:动画在 RecyclerView 中的工作方式不同。本质上,您在名为 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;
}
});

在所有这些回调中,您可以通过我上面解释的公共(public)字段访问 View 实例。 RecyclerView.Adapter 与之前的 Adapter 不同,它实际上只负责 RecyclerView 中的数据。

你也可以看看this library on GitHub它已经实现了一些不同的 ItemAnimators

更多信息请查看文档!

关于android - RecyclerView - 如何获得对每一行 View 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com