Implémentation d'une interface de communication entre le fragment et l'adaptateur
Dans le scénario décrit, vous disposez d'un fragment, MyListFragment, contenant un ListView et un CursorAdapter personnalisé. Votre objectif est de notifier MyListFragment lorsqu'un bouton est enfoncé dans une ligne spécifique de la liste. Pour réaliser cette communication, vous pouvez utiliser une approche basée sur l'interface.
Dans MyListAdapter, définissez une interface, AdapterInterface, avec une méthode de rappel, buttonPressed (), à appeler lors d'un clic sur le bouton :
public class MyListAdapter extends CursorAdapter { public interface AdapterInterface { public void buttonPressed(); } ... }
Ensuite, modifiez MyListAdapter pour inclure une variable d'instance de type AdapterInterface et un constructeur qui accepte une instance de cette interface comme argument :
private AdapterInterface buttonListener; public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context,c,flags); this.buttonListener = buttonListener; }
Dans MyListFragment, implémentez AdapterInterface et remplacez buttonPressed(), qui être invoqué à partir du onClickListener de AdapterView dans l'adaptateur :
public MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // ... } }
Enfin, instanciez MyListAdapter dans MyListFragment et transmettez une instance de MyListFragment lui-même comme argument au constructeur de l'adaptateur :
MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
En faisant cela, MyListAdapter peut invoquer le buttonPressed( ) méthode de MyListFragment chaque fois que vous appuyez sur le bouton de la ligne de la liste. Cela permet une communication transparente entre l'adaptateur et le fragment, vous permettant de prendre les actions nécessaires en cliquant sur le bouton.
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!