如何在recyclerview不同的项目点击上打开几个不同的片段?

Posted

技术标签:

【中文标题】如何在recyclerview不同的项目点击上打开几个不同的片段?【英文标题】:How to open few different fragments on recyclerview different item click? 【发布时间】:2020-07-28 14:51:28 【问题描述】:

我在片段中使用回收站视图。我的回收站视图列表中有 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);
        

    

【问题讨论】:

有多种方法可以实现这一点。您可以在父片段/活动中创建 OnClickListener 并将该实例传递给此适配器,并将该侦听器设置为列表项,与您在此处设置的方式相同。 您能在此处发布相应的代码吗?我只是在学习,所以无法理解您的观点。 请查看我的回答 【参考方案1】:
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      

          
        );

【讨论】:

以上是关于如何在recyclerview不同的项目点击上打开几个不同的片段?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击 recyclerview 中的项目来打开新活动 [重复]

如何在 Recyclerview Item Click 上打开新片段?

RecyclerView 项目在屏幕上的位置在运行时更改

如何 android recyclerview 更改不同的持有者视图背景

关于打开一个新活动以响应对片段内的 RecyclerView 项目的点击

如何在recyclerview android中的single_row_item的每个视图(imageView,textView)上添加不同的点击事件?