Java 将数据从RecyclerView传递到片段

Java 将数据从RecyclerView传递到片段,java,android-studio,android-fragments,android-recyclerview,android-adapter,Java,Android Studio,Android Fragments,Android Recyclerview,Android Adapter,我目前正在创建一个应用程序,它由一个片段、一个用于RecyclerView的适配器和一个通过片段访问的RecyclerView组成。我需要将数据从RecyclerView传递回片段,但是我无法这样做,因为该片段没有通过Intent进行标识。当用户从RecyclerView中选择一个项目时,该项目应传递给片段。我让RecyclerView使用onBackPressed()导航回工作正常的片段。然而,似乎没有数据通过。请参见下面我当前在onItemClick中的内容: @Override publi

我目前正在创建一个应用程序,它由一个片段、一个用于RecyclerView的适配器和一个通过片段访问的RecyclerView组成。我需要将数据从RecyclerView传递回片段,但是我无法这样做,因为该片段没有通过Intent进行标识。当用户从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();
}

如果您想将数据传递给片段,那么我认为您应该在RecycleServiceAdapter中执行一个McClickListener接口,并让片段实现它。Fragement应该向RecycleServiceAdapter中的onItemClickListeners注册自己。然后,您应该能够将片段传递给单击的项目

这将进入您的RecycleServiceAdapter类:

 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();
        }
     //...
    }

希望这有助于解决您遇到的问题。

您传递的是什么数据,是
int
还是什么
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
    }
}