我想实现一个 Recycler 视图,其中单击一个项目时会出现一个片段。但是 getSupportFragmentManager() 方法对我不起作用,我尝试替换 getActivity() 和 FragmentActivity,但对我没有任何作用。
public class AimsListAdapter extends RecyclerView.Adapter {
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.aims_fragment_list,viewGroup,false);
return new AimsListHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
((AimsListHolder)viewHolder).bindView(i);
}
@Override
public int getItemCount() {
return OurAimsDataForFragment.tittle.length;
}
private class AimsListHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private TextView AimsTextName;
private TextView AimsTextTap;
private ImageView AimsImage;
public AimsListHolder(@NonNull View itemView) {
super(itemView);
AimsTextName = (TextView)itemView.findViewById(R.id.aims_text_name);
AimsTextTap = (TextView) itemView.findViewById(R.id.aims_text_tap);
AimsImage = (ImageView) itemView.findViewById(R.id.aims_image);
itemView.setOnClickListener(this);
}
public void bindView(int position){
AimsTextName.setText(OurAimsDataForFragment.tittle[position]);
AimsTextTap.setText(OurAimsDataForFragment.tap[position]);
AimsImage.setImageResource(OurAimsDataForFragment.picturePath[position]);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
switch (position) {
case 1:
Fragment verifragment = new AimsDialogMetkaFragment();
FragmentTransaction ft3 = FragmentActivity.getSupportFragmentManager().beginTransaction();
ft3.add(R.id.content_frame, verifragment);
ft3.commit();
break;
}
}
}
getSupportFragmentManager()
这是一个活动方法,而 RecyclerView 不是一个活动,而是一个对任何活动一无所知的视图。视图应该有一个点击监听器,通过它你可以通知activity点击了某某元素号,而activity自己会决定是否显示对话框或者做其他事情。
您需要深入了解 onItemClicked(int position)。像这样或这样的东西。