J'ai dans ma MainActivity 3 RecyclerViews.
L'une d'elles dans une feuille du bas et c'est la principale (par défaut la feuille du bas est ouverte pour afficher celle-ci), dans sa méthode onbind de l'adaptateur J'ai créé un onClickListener afin que je souhaite que lorsque l'utilisateur clique sur un élément qu'il contient,
Je Si vous souhaitez revenir à la classe d'activité principale pour définir Pour démarrer une méthode , vous devez fermer la feuille inférieure et définir les données pour la prochaine vue de recyclage (qui apparaîtra lorsque la feuille inférieure est fermée )
..... Le problème ici est de savoir comment démarrer cette méthode à partir du Listener de la méthode onBind et lui donner un paramètre de ce viewHolder comme son nom et certains de ses attributs
s'il y a quelque chose qui n'est pas clair, merci de me le faire savoir
@Override public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) { viewHolder.categoryImage.setImageResource(mRowOfCategories.get(position).getCategoryImage()); viewHolder.categoryName.setText(mRowOfCategories.get(position).getCategoryName()); viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); }
4 Réponses :
Vous pouvez le faire facilement.
Définissez une interface personnalisée
public void InitAdapter() { yourAdapter = new Adapter(); // bloa bla bla yourAdapter.setListener(new CustomEventListener() { public void MyEventListener(String message) { // then do what you want } } }
Dans votre classe d'adaptateur
public Adapter ......... { private CustomEventListener listener; public void setListener(CustomEventListener listener) { this.listener = listener; } //Your onBind Override public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) { viewHolder.categoryImage.setImageResource(mRowOfCategories.get(position).getCategoryImage()); viewHolder.categoryName.setText(mRowOfCategories.get(position).getCategoryName()); viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null) listener.MyEventListener("Message"); } }); }
}
Dans votre Activité lors de la création de l'adaptateur ajouter ce code
public Interface CustomEventListener { public void MyEventListener(String message); //you can change parameters }
Vous devez utiliser Listener pour gérer le clic dans votre adaptateur quelque chose comme ceci:
adapter.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(View view, int position) { // do something with the view and position. } });
puis appeler l'auditeur avec:
@Override public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) { ... viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // call the listener. mListener.onItemClick(v, viewHolder.getAdapterPosition()); } }); }
puis lorsque vous utilisez l'adaptateur, définissez l'auditeur avec quelque chose comme ceci:
private OnItemClickListener mListener; public interface OnItemClickListener { void onItemClick(View view, int position); } public void setOnItemClickListener(OnItemClickListener listener) { this.listener = listener; }
Le plus simple:
Vous déclarez la méthode que vous souhaitez appeler dans votre activité. Elle doit être publique:
MyActivity mActivity=(MyActivity)activity; mActivity.method();
Ensuite, dans le constructeur de l'adaptateur, vous passez une référence à l'activité en tant que paramètre:
public MyAdapter(Activity activity){}
Vous voulez que vos recyclages soient conscients les uns des autres. Vous aurez besoin d'une classe, peut-être MainActivity, qui conservera la valeur sélectionnée, et l'effacera également sur demande, entre les recycleviews. Ensuite, vous aurez besoin de cette valeur pour propager la prochaine vue de recyclage. Si vous voulez être efficace, vous utiliserez une vue de recyclage et échangerez les données entre les sélections, et vous l'animerez pour qu'elle ressemble à une nouvelle vue de recyclage est créée.
Meilleure et simple manière de créer une interface publique et de l'implémenter dans Activity et de créer un setter dans Adapter, puis un objet d'écoute utilisateur onClick pour renvoyer un rappel à Activity pour effectuer une opération spécifique.