2015-08-13 2 views
0

У меня есть фрагмент позволяет назвать его 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 
     } 

    } 

} 

EventFragment

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 

Как я должен это сделать? Может быть, вместо этого перейдем от интерфейса «Просмотр» к «Фрагменту» и позвоните по номеру mOnAnimationListener.onAnimation() из фрагмента?

Я хочу иметь конкретное управление, когда анимация происходит на EventViewHolder, и я хочу иметь этот элемент управления от EventFragment, как я должен заниматься этим?

ответ

0

Если вы просто хотите анимировать пункты RecyclerView, вы можете взглянуть на RecyclerView.ItemAnimator.

Если нет (или, если вы все еще хотите, чтобы справиться с этим в фрагменте) вы можете прикрепить нажмите слушатель для ваших взглядов внутри ViewHolder объекта и обрабатывать щелчки, передавая события вверх ViewHolder->Adapter->Fragment через механизм у вас уже есть (и прохождение представление принятое в onClick в качестве параметра). Лично я бы держался подальше от этой картины. Одна из причин заключается в том, что в то же время можно прокручивать RecyclerView, и у меня сейчас недостаточно знаний о том, что происходит с этим конкретным видом, когда он выключен или, возможно, даже выключен. Или, возможно, указывая на другие данные.

Смежные вопросы