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!