Dro*_*man 2 android android-recyclerview
我正在使用新RecyclerView的替换现有的ListViews并遇到以下问题:在旧的BaseAdapter,我可以Animation为适配器内的每个项目创建一个"fly-in" ,只需将其Animation应用于convertView并注意到在SparseBooleanArray哪个位置Animation已经显示出来了.
onBindViewHolder()已替换的方法getView()不提供对任何方法的访问Views,也不提供对新方法的访问ItemAnimator.基本上我需要访问View我的根,ViewHolder将我自己Animation应用于每个项目.
有什么想法怎么做?
Xav*_*ler 12
必须使用的每个视图持有者RecyclerView都是子类,RecyclerView.ViewHolder并且这个类有一个公共字段itemView,其中包含View与之关联的ViewHolder.
final View view = viewHolder.itemView;
Run Code Online (Sandbox Code Playgroud)
但总的来说:动画的工作方式不同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;
}
});
Run Code Online (Sandbox Code Playgroud)
在所有这些回调中,您可以View通过公共字段访问实例,如上所述.该RecyclerView.Adapter不像以前Adapters真的只是在数据负责RecyclerView.
您还可以在GitHub上查看已经实现了一些不同的库ItemAnimators.
有关更多信息,请参阅文档!
| 归档时间: |
|
| 查看次数: |
8150 次 |
| 最近记录: |