Maison >Java >javaDidacticiel >Comment communiquer entre un fragment et son adaptateur à l'aide d'un clic sur un bouton piloté par un événement ?

Comment communiquer entre un fragment et son adaptateur à l'aide d'un clic sur un bouton piloté par un événement ?

DDD
DDDoriginal
2024-11-19 10:09:02708parcourir

How to Communicate Between a Fragment and its Adapter using an Event-Driven Button Click?

Interfaçage d'un fragment et d'un adaptateur via des clics de boutons déclenchés par des événements

Pour communiquer des événements entre un fragment et son adaptateur associé, on peut implémenter une interface dans la classe Adaptateur. Dans ce scénario, un fragment nommé MyListFragment contient un ListView qui utilise un CursorAdapter personnalisé. Lors d'un clic sur le bouton dans la ligne de la liste, une notification doit être envoyée au Fragment.

La solution consiste à créer une interface au sein de la classe Adapter :

public class MyListAdapter extends CursorAdapter {

    public interface AdapterInterface {
        void buttonPressed();
    }

    ...
}

Au sein de la classe Fragment ( MyListFragment), implémentez l'AdapterInterface :

public class MyListFragment extends Fragment implements AdapterInterface {

    @Override
    public void buttonPressed() {
        // Some action
    }
}

Pour lier l'Adaptateur et le Fragment, modifiez l'Adaptateur class :

public class MyListAdapter extends CursorAdapter {

    private AdapterInterface buttonListener;

    public MyListAdapter(Context context, Cursor c, int flags, AdapterInterface buttonListener) {
        super(context, c, flags);
        this.buttonListener = buttonListener;
    }

    ...
}

Dans la méthode bindView de l'adaptateur, définissez le comportement du clic sur le bouton :

@Override
public void bindView(View view, Context context, Cursor cursor) {
    ...

    holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonListener.buttonPressed();
        }
    });
}

Lors de la création de l'adaptateur, transmettez le fragment comme argument :

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

Ce mécanisme garantit que lorsque le bouton est cliqué, le Fragment reçoit la notification via l'interface implémentée.

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