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 à le constructeur pour fournir l'implémentation de l'interface.
MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
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!