Charger un fragment en cliquant sur CardView de RecyclerView
J'ai un RecyclerView
et CardView
à l'intérieur. Maintenant ce que je veux faire est de charger d'un simple Fragment
en cliquant sur le CardView. Je ne suis pas capable de le faire avec FragmentManager ou SupportFragmentManager. Merci de me donner quelques directions.
Mon RecyclerViewAdapder et ViewHolder ..
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
private String[] eventName;
private String[] eventBrief;
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewName, textViewBrief;
public CardView cardView;
public ViewHolder(View v) {
super(v);
textViewName = (TextView)v.findViewById(R.id.textViewName);
textViewBrief = (TextView)v.findViewById(R.id.textViewBrief);
final Context context = v.getContext();
cardView = (CardView)v.findViewById(R.id.card_view);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EventFragment eventFragment = EventFragment.newInstance();
//Load and view eventFragment here??
}
});
}
}
public RecyclerViewAdapter(String[] eventName, String[] eventBrief) {
this.eventName = eventName;
this.eventBrief = eventBrief;
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.my_card_view, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textViewName.setText(eventName[position]);
holder.textViewBrief.setText(eventBrief[position]);
}
@Override
public int getItemCount() {
return eventName.length;
}
}
OriginalL'auteur priyank | 2015-03-20
Vous devez vous connecter pour publier un commentaire.
Il existe de nombreuses façons d'aller à ce, vraiment. Je pense que la meilleure mise en œuvre est un rappel à l'activité de l'avisant qu'un élément a été cliqué. Je vais vous donner un coup de main avec un peu de code, voir ci-dessous:
Puis dans votre activité, il vous suffit d'instancier comme ceci:
OriginalL'auteur jvrodrigues
Une mise en œuvre simple est d'ajouter un
onClickListener()
à laViewHolder
'sitemView
dans le constructeur de laAdapter
.enfin, trouvé réponse ici.. merci
qu'est-ce que
Fragment myFragment = new MyFragment();
?MyFragment
est le fragment de la classe de la fragment que vous voulez charger @sabbibJAVAvous pouvez voir mon œuvre ici github.com/martiendt/daily-dhamma j'ai utilisé ce sur github.com/martiendt/daily-dhamma/blob/master/app/src/main/java/...
OriginalL'auteur viper
C'est parce que
RecyclerViewAdapter
ne possède pas de référence à laFragmentManager
. Vous devez communiquer à l'Activité/Fragment d'hébergement de laRecyclerView
, que l'événement s'est produit et à partir de là, vous commencer le fragment. Pour ce faire vérifier ma réponse iciOriginalL'auteur Blackbelt