2015-11-29 2 views
3

У меня есть активность с фрагментом. Внутри этого фрагмента есть viewpager и внутри, что есть список. Теперь, когда пользователь нажимает на элемент в списке, фрагмент должен быть заменен другим фрагментом, и мне нужно передать некоторые данные, такие как позиция списка и некоторые другие значения, связанные с этим. Я могу реализовать это с помощью интерфейсов, но поскольку мы используем rxjava, поэтому хотим сделать это с помощью rx ... Не хотите внедрять схему событий или шаблон rxbus прямо сейчас. Итак, как мне его реализовать, используя rxjava?Связь между фрагментами с использованием rxjava

ответ

6

Один из способов сделать это:

/* inside whatever you mean by the list */ 
PublishSubject<Void> mClickSubject = PublishSubject.create(); //or use another type instead of Void if you need 

/*...*/ 
    item.setOnClickListener(v -> mClickSubject.onNext(null)); 
/*...*/ 

public Observable<Void> itemClicked() { 
    return mClickSubject; 
} 

/* pass your subject/observable all the way to the activity */ 

/* inside the activity */ 

private void setupSubscription() { 
    mCurrentFragment.listItemClicked() 
      .subscibe(/* switch fragment */); 
} 

Или другим способ, чтобы иметь одноплодный/статический класс, держащий член PublishSubject и толкать предметы через него. Для этого вам не понадобятся все геттеры, чтобы передать наблюдаемые из списка в действие.

+1

Можете ли вы объяснить второй сингл-метод с примером, если это возможно? – shivamDev

+1

@shivamDev Я думаю, вы ищете что-то вроде этого: https://stackoverflow.com/a/40836109/1101730 – Micer

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