如何处理recyclerview点击监听器打开新片段

时间:2018-03-07 09:37:26

标签: android android-fragments android-recyclerview fragment recycler-adapter

我想在recyclelerview(一项)的onclick中打开另一个片段。如何在recyclerview点击监听器上打开另一个片段。我想移动到recyler视图上的另一个片段,一个列表打开另一个片段。我也设置了回收站视图和dapter。

    @BindView(R.id.recyclerView)
     RecyclerView recyclerView;
    ArrayList<ListCallback> listCallback = new ArrayList<>();

     public static SearchResultFragment newInstance() {
    return new SearchResultFragment();
}

      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
      View view = inflater.inflate(R.layout.fragment_search_result, 
      container, false);

       recyclerView.addOnItemTouchListener(new 
        RecyclerView.OnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) 
        {


            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent e) {
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean 
        disallowIntercept) {

        }
        });
        return view;
        }`

2 个答案:

答案 0 :(得分:1)

使用此链接为适配器设置onItemClickListener ...

  

https://antonioleiva.com/recyclerview-listener/

然后将侦听器传递给RecyclerView适配器的构造函数。 在onitemclick上写这个..

Fragment fragment = new XYZFragment();
getActivity().getFragmentManager().beginTransaction..... and so on.. 

替换您当前的片段。

答案 1 :(得分:1)

你需要在适配器中编写onClickListner,如下所示。

.navbar

在适配器内部使用接口,如下所示

static class ViewHolder extends RecyclerView.ViewHolder {
        private TextView name;
        private ImageView image;

        public ViewHolder(View itemView) {

            super(itemView);
            name = (TextView) itemView.findViewById(R.id.name);
            image = (ImageView) itemView.findViewById(R.id.image);
        }

        public void bind(final ContentItem item, final OnItemClickListener listener) {

            name.setText(item.name);
            Picasso.with(itemView.getContext()).load(item.imageUrl).into(image);
            itemView.setOnClickListener(new View.OnClickListener() {

                @Override public void onClick(View v) {
                   // This is OnClick of any list Item
                    listener.onItemClick(item);
                }

            });
}

在您的父Activity中实现上面的接口并编写代码来替换Fragment。

public interface OnItemClickListener {
        void onItemClick(ContentItem item);
    }