首页 > 解决方案 > 如何在recyclerview不同的项目点击上打开几个不同的片段?

问题描述

我在片段中使用回收站视图。我的回收站视图列表中有 4 个项目。现在我想打开 4 个新的不同片段。在这里我可以打开不同的活动,但我想打开 4 个不同的片段而不是活动。下面是我的 RecyclerViewAdapeter 代码。请帮我。

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {

    Context mContext;
    List<HindiFragmentModel> mData;
    private MathFragment MathFragment;

    public RecyclerViewAdapter(Context mContext, List<HindiFragmentModel> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View v;
        v = LayoutInflater.from(mContext).inflate(R.layout.fragmentdesign,parent,false);
        MyViewHolder vHolder = new MyViewHolder(v);
        mContext = v.getContext();

        return vHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
        holder.tv_name.setText(mData.get(position).getName());
        holder.img.setImageResource(mData.get(position).getPhoto());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               
               // here i want to open 4 new fragments..
               if (position == 0) {
                    Intent intent = new Intent(v.getContext(), NewHindiActivity.class);
                    v.getContext().startActivity(intent);
                }
                if (position == 1) {
                    Intent intent = new Intent(v.getContext(), NewHindiActivity1.class);
                    v.getContext().startActivity(intent);
                }
            }
        });

    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView tv_name;
        private ImageView img;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            tv_name = (TextView) itemView.findViewById(R.id.titleView);
            img = (ImageView) itemView.findViewById(R.id.imageView);
        }

    }

}

标签: androidandroid-fragmentsandroid-recyclerviewfragmentonclicklistener

解决方案


holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            if(position == 0){
                Bundle args = Bundle()
                args.putString("id", Id)
                NewFragment newFragment = NewFragment()
                newFragment.setArguments(args)
        FragmentManager  fragmentManager =currentfragment.getFragmentManager()
        FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction()
                fragmentTransaction.add(R.id.frame, newFragment)
                fragmentTransaction.hide(currentfragment)
                fragmentTransaction.addToBackStack(null)
                fragmentTransaction.commit()
               }if(position == 1){
               //as mentioned above only the change is Fragment Instance
               }

               //write similar code for other positions      

          }
        });

推荐阅读