如何在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 上打开新片段?
如何 android recyclerview 更改不同的持有者视图背景
关于打开一个新活动以响应对片段内的 RecyclerView 项目的点击
如何在recyclerview android中的single_row_item的每个视图(imageView,textView)上添加不同的点击事件?