[英]Access Inner Class Method (from Viewholder in adapter) from a Fragment
我有一个片段让调用它EventFragment
,和我有一个RecyclerView.Adapter
称为EventAdapter
,里面该适配器被称为viewholder类EventViewHolder
。 我想从Fragment
访问viewholder类内的动画方法。
我将如何完成? 我正在考虑定义另一个接口来实现此目的。
这是我到目前为止的内容:
OnAnimationListener
public interface OnAnimationListener {
void onAnimation();
}
适配器
public EventAdapter extends RecyclerView.Adapter<RecycleView.ViewHolder> {
// Boilerplate initialization stuff here
public class EventViewHolder extends RecyclerView.ViewHolder implements OnAnimationListener {
// Initialization code
@Override
public void onAnimation() {
// Do an animation
}
}
}
事件片段
public class EventFragment extends Fragment {
// Boilerplate initialization code
}
我想我应该像这样在Fragment
实现一个接口:
public class EventFragment extends Fragment implements onAnimationListener {
private void initAdapter() {
mAdapter.setOnAnimationListener(this);
}
@Override
public void onAnimation(Data data) {
// pass any data
}
}
那时候我有点卡住了。 通常,一旦通过侦听器,您将调用此方法:
OnAnimationListener.onAnimation(...)
但这没有道理。 代码流如下所示:
EventFragment --> Adapter --> ViewHolder
我需要实现以下代码流:
EventFragment (get access to specific viewholder and do animation) <--> Viewholder
我应该如何做到这一点? 也许将接口从Viewholder传递到Fragment,然后从片段调用mOnAnimationListener.onAnimation()
吧?
我想对何时在EventViewHolder
上发生动画有特定的控制,并且我想从EventFragment
获得此控制,我应该如何处理呢?
如果仅想为RecyclerView
的项目设置动画,则可以查看RecyclerView.ItemAnimator
。
如果不是(或者您仍然想在片段中处理此问题),则可以在ViewHolder
对象内附加视图的单击侦听器,并通过已经具有的机制将事件向上传递到ViewHolder->Adapter->Fragment
来处理单击。并将在onClick
收到的视图作为参数传递)。 我个人将远离这种模式。 原因之一是RecyclerView
可以同时滚动,而且我现在对特定视图一旦离开位置甚至可能不在屏幕上会发生什么还没有足够的了解。 或者也许指向其他数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.