片段中recyclerView中的onSwiped()将信息发送回MainActivity



我需要一些帮助,在MainActivity中设置一个侦听器,等待清除回收查看项目。

                @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());

我需要回到MainActivity,因为一切都是在那里执行的。

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

  1. 第一个是使用您自己的回调方法

首先创建一个模型类来存储需要发送的数据示例:

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);
    }
}

之后,在onSwiped方法中,创建一个details类的对象,并分配所有需要传递的值,然后调用监听器,如下所示:

 @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
    }
}
  1. 或者第二个很容易。您必须使用第三方库,如EventBushttps://github.com/greenrobot/EventBus或Ottohttp://square.github.io/otto/请点击以上链接

现在试着让我们知道…:)

相关内容

最新更新