2015-08-25 13 views
8

In ViewHolder, non è possibile chiamare getSupportFragmentManager.non mostra getSupportFragmentManager su ViewHolder in RecyclerView

voglio cambiare tra Frammento

ho cercato tutta la pagina di Google. ma non riesco a trovarlo

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 

    public ImageView imgThumbnail;//img 
    public TextView tvspecies; //text 

    public ViewHolder(View itemView) { 
     super(itemView); 

     imgThumbnail = (ImageView)itemView.findViewById(R.id.img_thumbnail); 
     tvspecies = (TextView)itemView.findViewById(R.id.tv_species); 

     itemView.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) {/*버튼 실행했을때 실행부분*/ 

     Fragment fm=new NewsFragment(); 
     FragmentTransaction transaction=fm.getFragmentManager().beginTransaction(); 
     transaction.replace(R.id.Linearcontainer, fm); 
     transaction.addToBackStack(null); 
     transaction.commit(); 

    }//onClick 


}//ViewHolder 
+0

hai trovato la risposta? –

risposta

0

solo fare questo, Passo getSupportFragmentManager dalla vostra attività o un frammento in cui si istanzia l'adattatore, e fare questo nel costruttore della classe adattatore.

public ViewHolder(View itemView, FragmentManager fragmentManager) { 
     super(itemView); 

     imgThumbnail = (ImageView)itemView.findViewById(R.id.img_thumbnail); 
     tvspecies = (TextView)itemView.findViewById(R.id.tv_species); 
     this.fragmentManager = fragmentManager 
     itemView.setOnClickListener(this); 

    } 
13

Provate questo

public HorizontalProductAdapter(Activity context, List<RecycleIndividualProduct>data, FragmentManager fragmentManager){ 
     inflater = LayoutInflater.from(context); 
     this.subActivityData = data; 
     this.fragmentManager=fragmentManager; 
} 

e chiamare la scheda dalla vostra attività o il frammento

mAdapter = new HorizontalProductAdapter(getActivity(),allDeals,getFragmentManager()); 
0

Nella mia classe adattatore recyclerview ho fatto questo:

//recyclerView adapter global variable 
private List<Data_Class> dataModel; 
private Context mContext; 
private FragmentManager FragManager; 

//Recyclerview adapter constructor 
public Recycler_Adapter_Class(Context appContext, List <Data_Class> data, FragmentManager fmanager) { 
    this.mContext = appContext; 
    this.dataModel = data; 
    this.FragManager = fmanager; 
} 

//In the activity or Fragment that calls the recyclerview adapter I did this: 

Recycler_Adapter_Class RC = new Recycler_Adapter_Class(this, Data_Class_List, this.getSupportFragmentManager()); 

RecyclerView rView = (RecyclerView) findViewById(R.id.recycler_view); 

rView.setAdapter(RC); 

Speranza questo aiuta qualcuno. Saluti!

0

<p>Pass FragmentTransaction by constructing and then replace.</p> 
 
<code>public SettingsAdapter(Context context, List<Settings> settingsList, android.support.v4.app.FragmentTransaction ft){ 
 
this.context = context; 
 
     this.settingsList = settingsList; 
 
     this.ft = ft; 
 
}</code> 
 

 
// Calling the SettingsAdapter with constructors 
 

 
    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
 
     settingsAdapter = new SettingsAdapter(getActivity(), settingsList, fragmentTransaction);`enter code here`

Problemi correlati