Android 是否在recyclerView in fragment中创建一个onsweed()以将信息发送回MainActivity?

Android 是否在recyclerView in fragment中创建一个onsweed()以将信息发送回MainActivity?,android,android-fragments,Android,Android Fragments,我需要一些帮助,在MainActivity中设置一个侦听器,等待一个recyclerview项被删除 @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { Log.d(TAG, "whats swiped " + viewHolder.getAdapterPosition() + " d

我需要一些帮助,在MainActivity中设置一个侦听器,等待一个recyclerview项被删除

                @Override
               public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
                Log.d(TAG, "whats swiped " + viewHolder.getAdapterPosition() + "   direction: " + direction + "   arrayListCountyNames.get(viewHolder.getAdapterPosition())" + arrayListCountyNames.get(viewHolder.getAdapterPosition()));
                final String s = arrayListCountyNames.get(viewHolder.getAdapterPosition());
                final String s2 = arrayListStateName.get(viewHolder.getAdapterPosition());
                final String s3 = arrayListSourceId.get(viewHolder.getAdapterPosition());
                final String s4 = arrayListID.get(viewHolder.getAdapterPosition());

我需要回到main活动,因为那里执行所有操作。

有两种方法可以将数据发送到其他类

  • 第一个方法是使用您自己的回调方法
  • 首先创建一个模型类来存储需要发送的数据示例:

    public class Details {
        public String s ;
        public String s2 ;
        public String s3;
        public String s4;
    }
    
    然后在片段中创建一个侦听器(接口),如下所示:

    public class BlankFragment extends Fragment {
    
        private OnSwipeMyRecyclerViewListener mListener;
    
        public BlankFragment() {
            // Required empty public constructor
        }
    
        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            if (context instanceof OnSwipeMyRecyclerViewListener) {
                mListener = (OnSwipeMyRecyclerViewListener) context;
            } 
        }
    
        @Override
        public void onDetach() {
            super.onDetach();
            mListener = null;
        }
    
    
        public interface OnSwipeMyRecyclerViewListener{
            void onSwipeMyRecyclerView(Details details, int position);
        }
    }
    
     @Override
     public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
    
            //your code
            Details details = new Details();
            details.s = s;
            details.s2 = s2;
            details.s3 = s3;
            details.s4 = s4;
            mListener.onSwipeMyRecyclerView(details,direction);
     }
    
    之后,在OnSweep方法中,创建details类的一个对象,并指定所有需要传递和调用侦听器的值,如下所示:

    public class BlankFragment extends Fragment {
    
        private OnSwipeMyRecyclerViewListener mListener;
    
        public BlankFragment() {
            // Required empty public constructor
        }
    
        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            if (context instanceof OnSwipeMyRecyclerViewListener) {
                mListener = (OnSwipeMyRecyclerViewListener) context;
            } 
        }
    
        @Override
        public void onDetach() {
            super.onDetach();
            mListener = null;
        }
    
    
        public interface OnSwipeMyRecyclerViewListener{
            void onSwipeMyRecyclerView(Details details, int position);
        }
    }
    
     @Override
     public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
    
            //your code
            Details details = new Details();
            details.s = s;
            details.s2 = s2;
            details.s3 = s3;
            details.s4 = s4;
            mListener.onSwipeMyRecyclerView(details,direction);
     }
    
    最后,在您的活动中实现您的侦听器,如下所示

    public class MainActivity extends AppCompatActivity implements BlankFragment.OnSwipeMyRecyclerViewListener {
    
    
        @Override
        public void onSwipeMyRecyclerView(Details details, int position) {
            //Do whatever want to do with your data here
        }
    
    }
    
  • 或者第二个很简单。您必须使用诸如EventBus或Otton之类的第三方库才能访问上述链接
    现在试着让我们知道……:)

    看起来不错,但我一直在使用“MonswipMyRecycleServiceWListener.OnswipMyRecycleView(详细信息,方向);”给我一个错误,因为onSwipe在fragment类中,而“private OnswipMyRecycleServiceWListener MonswipMyRecycleServiceWListener;”在MyAdapter类中,所以onSwipe方法在您的fragment类中?太好了!谢谢你的精确和具体!