我的主活动中有RecyclerView。我想在单击不同的RecyclerView项目后更改不同的片段。我尝试使用onbindviewholder中的位置()但是当我点击RecyclerView项目时,我无法更改碎片。我没有得到任何错误,但同时在RecyclerView的点击上没有发生任何事情。请检查我的代码,告诉我哪里错了,或者哪一行代码我错过了。
循环器适配器代码:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
ArrayList<NewModel> newModels;
Context context;
public RecyclerAdapter(ArrayList<NewModel>newModels, Context context){
this.newModels = newModels;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recy_layout, parent,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
holder.imageView.setImageResource(newModels.get(position).getImg());
holder.textView.setText(newModels.get(position).getText());
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(position ==1){
((FragmentActivity)context).getSupportFragmentManager().beginTransaction()
.replace(R.id.framelayout, new FirstFragment());
}
else if(position ==2){
((FragmentActivity)context).getSupportFragmentManager().beginTransaction()
.replace(R.id.framelayout, new SecondFragment());
}
}
});
}
@Override
public int getItemCount() {
return newModels.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.cirlceimg);
textView = itemView.findViewById(R.id.text1);
}
}
}
3条答案
按热度按时间z9zf31ra1#
执行以下操作:
在您对事务调用commit()之前,不会呈现片段,因为事务使用构建器模式,并且在构建器模式中有一个方法表示我不想做任何其他事情,只想创建对象,在本例中,这些方法通常是namecreate()、build()和commit()
luaexgnf2#
您可以通过接口使用回调实现来处理Activity中的
onClickListener
。将侦听器添加到适配器的构造函数中
在
onBindViewHolder
中设置clicklistener在您的活动中:
bz4sfanl3#
绑定视图夹持器上的内部
希望这对你有帮助。