繁体   English   中英

从片段访问内部类方法(来自适配器的Viewholder)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM