В настоящее время я создаю приложение, состоящее из фрагмента, адаптера для RecyclerView и RecyclerView, доступ к которому осуществляется через фрагмент. Мне нужны данные, которые нужно передать из RecyclerView обратно во фрагмент, но я не могу этого сделать, поскольку фрагмент не идентифицируется с помощью намерения. Когда пользователь выбирает элемент из RecyclerView, этот элемент затем должен быть передан во фрагмент. У меня есть RecyclerView, использующий onBackPressed()
для возврата к фрагменту, который отлично работает. Однако данные, похоже, не проходят. Пожалуйста, посмотрите ниже, что у меня сейчас в onItemClick
:
@Override
public void onItemClick(View view, int position) {
// Need to pass data through to Fragment, however unable to do so as it's not identified
// within the Intent
onBackPressed();
}
Всего 1 ответ
Если вы хотите передавать данные в свой фрагмент, я думаю, вам следует создать интерфейс OnItemClickListener в своем RecyclerViewAdapter и реализовать его в своем фрагменте. Fragement должен зарегистрироваться в onItemClickListeners в RecyclerViewAdapter. Тогда вы сможете передать свой фрагмент выбранному элементу.
Это входит в ваш класс RecyclerViewAdapter:
class RecyclerViewAdapter{
//...
interface OnItemClickListener {
void onItemClick(Item item); //replace the item with whatever you want to pass to the fragment
}
List<OnItemClickListener> onItemClickListeners = new ArrayList<>();
public void addOnItemClickListener(OnItemClickListener listener){
onItemClickListeners.add(listener);
}
@Override
public void onItemClick(View view, int position) {
for(OnItemClickListener listener : onItemClickListeners) {
listener.onClick(item);
}
onBackPressed();
}
//...
}
Это относится к вашему классу фрагмента:
class Fragment implements RecyclerViewAdapter.OnItemClickListener {
//...
//Somewhere in your fragment where you create your RecyclerViewAdapter
recyclerViewAdapter.addOnItemClickListener(this);
//...
@Override
public void onItemClick(Item item) {
//now data is passed to your Fragment
}
}
Надеюсь, что это поможет решить вашу проблему.