Maison > Java > javaDidacticiel > le corps du texte

Comment implémenter la communication entre un fragment et un adaptateur sous Android ?

Patricia Arquette
Libérer: 2024-11-15 07:20:02
original
753 Les gens l'ont consulté

How can you implement communication between a Fragment and an Adapter in Android?

Implémentation d'interface entre fragment et adaptateur

Dans le domaine du développement Android, l'interface entre les fragments et les adaptateurs est une tâche courante. Pour faciliter cela, un CursorAdapter personnalisé peut être utilisé avec une interface d'adaptateur intégrée. Cette interface sert de canal de communication entre l'adaptateur et le fragment.

Considérez un scénario dans lequel un fragment (MyListFragment) contient un ListView et un CursorAdapter personnalisé. Chaque ligne de la liste contient un bouton et en cliquant dessus, une action doit être effectuée dans le fragment. Pour y parvenir, une interface, AdapterInterface, est définie au sein de l'adaptateur.

public class MyListAdapter extends CursorAdapter {

    public interface AdapterInterface {
        public void buttonPressed();
    }

    private AdapterInterface buttonListener;

    // ...
}
Copier après la connexion

Dans la méthode bindView de l'adaptateur, un OnClickListener est défini pour le bouton de chaque ligne.

@Override
public void bindView(final View view, final Context context, final Cursor cursor) {
    // ...
    holder.button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // some action
            // need to notify MyListFragment
            if (buttonListener != null) {
                buttonListener.buttonPressed();
            }
        }
    });
}
Copier après la connexion

L'AdapterInterface doit être implémenté dans le fragment (MyListFragment) pour gérer l'événement de clic sur le bouton.

public class MyListFragment extends Fragment implements AdapterInterface {

    @Override
    public void buttonPressed() {
        // some action
    }
}
Copier après la connexion

Pour établir la communication entre l'adaptateur et le fragment, un nouveau constructeur est introduit dans l'adaptateur, ainsi qu'une variable d'instance pour contenir la référence de l'interface.

AdapterInterface buttonListener;

public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener)
{
  super(context,c,flags);
  this.buttonListener = buttonListener;
}
Copier après la connexion

Lors de la création de l'adaptateur, le fragment est passé comme argument à le constructeur pour fournir l'implémentation de l'interface.

MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
Copier après la connexion

Cette approche garantit que lorsque l'on clique sur le bouton de l'adaptateur, la méthode buttonPressed dans le fragment est invoquée, facilitant la communication souhaitée entre l'adaptateur et le fragment.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal