Java 在RecylclerView中使用具有不同viewHolder的模板类型
我有Java 在RecylclerView中使用具有不同viewHolder的模板类型,java,android,Java,Android,我有RecylerView,它有三种不同类型的viewHolder都是从`RecyclerView.viewHolder扩展而来的 ImageViewHolder VideoViewHolder TextViewHolder 我为动画创建了一个函数。我需要在此函数中将viewHolder作为参数传递。因为有三个不同的视图持有者,我需要创建三个不同的动画功能?或者我可以在同一个函数中传递不同类型的viewHolder private void runEnterAnimation(final I
RecylerView
,它有三种不同类型的viewHolder
都是从`RecyclerView.viewHolder扩展而来的
ImageViewHolder
VideoViewHolder
TextViewHolder
viewHolder
作为参数传递。因为有三个不同的视图持有者,我需要创建三个不同的动画功能?或者我可以在同一个函数中传递不同类型的viewHolder
private void runEnterAnimation(final ImageViewHolder holder) {
final int screenHeight = Utils.getScreenHeight(holder.itemView.getContext());
holder.itemView.setTranslationY(screenHeight);
holder.itemView.animate()
.translationY(0)
.setInterpolator(new DecelerateInterpolator(3.f))
.setDuration(700)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
dispatchAddFinished(holder);
}
})
.start();
}
这是我的动画功能
private void runEnterAnimation(final ImageViewHolder holder) {
final int screenHeight = Utils.getScreenHeight(holder.itemView.getContext());
holder.itemView.setTranslationY(screenHeight);
holder.itemView.animate()
.translationY(0)
.setInterpolator(new DecelerateInterpolator(3.f))
.setDuration(700)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
dispatchAddFinished(holder);
}
})
.start();
}
运行此动画
runEnterAnimation((ImageViewHolder) viewHolder);
我尝试将此函数转换为模板变量,但不起作用。带有模板
T
类型的动画
private<T> void runEnterAnimation(final T holder) {
//.... } // not working, can not resolve symbol itemView
private void runEnterAnimation(最终T持有者){
//..}//不工作,无法解析符号itemView
你能告诉我怎么做吗。为什么不简单地将参数声明为type
RecyclerView.ViewHolder
?这样行吗?如果我不想通过RecyclerView.ViewHolder
传递模板typet
?