android - 如何在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);
}
}
}
解决方案
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
}
});
推荐阅读
- javascript - 选择标签 HTML 未显示在 DOM ReactJS 中
- javascript - 无法使用 DynamoDB 节点 SDK docClient 从 DynamoDB 表中读取项目
- python - 在熊猫数据框中查找与当前行值不同的先前连续出现的值的数量
- javascript - 如何使用 JavaScript 创建一个 BMI 计算器,可选择以公斤/米为单位的 BMI 或以磅/英尺为单位的 BMI
- gettext - GNU gettext 通过公共互联网发送什么,为什么?
- flutter - Flutter OnSelected - how to access "this"
- apache-spark - merge multiple small json files using pyspark in s3
- cygwin - What is the cygwin equivalent of the mac command "cd ~/Documents"?
- r - How does R lm choose contrasts with interaction between a categorical and continuous variables?
- scala - ScalaTest 的族多态性