Как вызвать getupportfragmentmanager () из класса адаптера?

У меня есть ViewPager как первый элемент внутри RecyclerView Я хочу установить FragmentStatePagerAdapter в viewpager внутри onBindViewHolder() . Но я не могу назвать getsupportfragmentmanager() Пожалуйста, помогите !!. Вот мой код:

 public class CustomListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<RowItem> rowItemList; private final int VIEW_TYPE_CUSTOM = 0; private final int VIEW_TYPE_NORMAL = 1; NewPagerAdapter mCustomPagerAdapter; public CustomListAdapter(Context context, List<RowItem> rowItemList) { this.context = context; this.rowItemList = rowItemList; } @Override public int getItemViewType(int position) { if (position == 0) return VIEW_TYPE_CUSTOM; else return VIEW_TYPE_NORMAL; } @Override public int getItemCount() { return rowItemList.size()+1; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (getItemViewType(position)) { case VIEW_TYPE_CUSTOM: recViewHolder1 viewHolderSecond = (recViewHolder1) holder; mCustomPagerAdapter = new NewPagerAdapter(getSupportFragmentManager()); viewHolderSecond.vPager.setAdapter(mCustomPagerAdapter); break; case VIEW_TYPE_NORMAL: recViewHolder2 viewHolderFirst = (recViewHolder2) holder; RowItem rowItem = rowItemList.get(position-1); viewHolderFirst.vName.setText(rowItem.getName()); viewHolderFirst.vImage.setImageResource(rowItem.getImageId()); break; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case VIEW_TYPE_CUSTOM: View itemView = LayoutInflater. from(parent.getContext()). inflate(R.layout.pagerlayout, parent, false); return new recViewHolder1(itemView); case VIEW_TYPE_NORMAL: View itemView1 = LayoutInflater. from(parent.getContext()). inflate(R.layout.rowlayout, parent, false); return new recViewHolder2(itemView1); } return null; } @Override public long getItemId(int position) { return super.getItemId(position); } public static class recViewHolder1 extends RecyclerView.ViewHolder { protected static ViewPager vPager; public recViewHolder1(View v) { super(v); vPager = (ViewPager) v.findViewById(R.id.vPager); } } public class recViewHolder2 extends RecyclerView.ViewHolder implements View.OnClickListener { protected TextView vName; protected ImageView vImage; public recViewHolder2(View v) { super(v); v.setOnClickListener(this); vName = (TextView) v.findViewById(R.id.vName); vImage = (ImageView) v.findViewById(R.id.vImage); } } } 

Я решил его, литая mContext

 ((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction() .replace(R.id.item_detail_container, fragment) .commit(); 

Сначала вы должны передать контекст конструктору адаптера.

Затем вы должны использовать эту ссылку на контекст, чтобы получить getSupportFragmentManager .

 mCustomPagerAdapter = new NewPagerAdapter(context.getSupportFragmentManager()); viewHolderSecond.vPager.setAdapter(mCustomPagerAdapter); 

Здесь вы можете установить переход;)

 public void pushFragment(Fragment newFragment, Context context){ FragmentTransaction transaction = ((FragmentActivity)context).getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.fragment, newFragment); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); transaction.addToBackStack(null); transaction.commit(); }