Передача данных из RecyclerView во фрагмент

В настоящее время я создаю приложение, состоящее из фрагмента, адаптера для 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
    }
}

Надеюсь, что это поможет решить вашу проблему.


Есть идеи?

10000