Maison >Java >javaDidacticiel >Comment implémenter la communication entre un fragment et un adaptateur sous Android ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-15 07:20:02825parcourir

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;

    // ...
}

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();
            }
        }
    });
}

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
    }
}

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;
}

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

MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);

Cette approche garantit que lorsque le bouton dans l'adaptateur est cliqué, 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!

Déclaration:
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