Création d'une interface entre un fragment et un adaptateur
Lorsque vous traitez un fragment contenant un ListView et un CursorAdapter personnalisé, établir une communication entre eux devient crucial . Pour y parvenir, les interfaces peuvent fournir une solution propre et efficace.
Définition de l'interface
Dans la classe adaptateur, définissez une interface qui définit la méthode à appeler lorsque le le bouton est enfoncé. Par exemple :
public interface AdapterInterface { public void buttonPressed(); }
Implémentation de l'adaptateur
Ajouter un constructeur à l'adaptateur qui initialise une variable d'instance pour l'interface :
public MyListAdapter(Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context, c, flags); this.buttonListener = buttonListener; }
Dans la méthode bindView(), lorsque le bouton est cliqué, appelez la méthode buttonPressed() sur le interface :
@Override public void bindView(...) { ... holder.button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { buttonListener.buttonPressed(); } }); }
Implémentation de fragment
Implémentez l'AdapterInterface dans la classe fragment et remplacez la méthode buttonPressed() :
public class MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // Custom action to be performed } }
Initialisation
Lors de la création de l'adaptateur, transmettez le fragment en argument à le constructeur :
MyListAdapter adapter = new MyListAdapter(getActivity(), myCursor, myFlags, this);
Notes
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!