Heim >Java >javaLernprogramm >Wie kommuniziere ich zwischen einem Fragment und seinem Adapter mithilfe eines ereignisgesteuerten Schaltflächenklicks?
Schnittstelle zwischen Fragment und Adapter durch ereignisgesteuerte Schaltflächenklicks
Um Ereignisse zwischen einem Fragment und dem zugehörigen Adapter zu kommunizieren, kann man eine Schnittstelle implementieren innerhalb der Adapter-Klasse. In diesem Szenario enthält ein Fragment namens MyListFragment eine ListView, die einen angepassten CursorAdapter verwendet. Beim Klicken auf die Schaltfläche in der Listenzeile muss eine Benachrichtigung an das Fragment gesendet werden.
Die Lösung besteht darin, eine Schnittstelle innerhalb der Adapter-Klasse zu erstellen:
public class MyListAdapter extends CursorAdapter { public interface AdapterInterface { void buttonPressed(); } ... }
Innerhalb der Fragment-Klasse ( MyListFragment), implementieren Sie das AdapterInterface:
public class MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // Some action } }
Um den Adapter und das Fragment zu binden, ändern Sie den Adapter Klasse:
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; } ... }
Definieren Sie innerhalb der bindView-Methode des Adapters das Schaltflächenklickverhalten:
@Override public void bindView(View view, Context context, Cursor cursor) { ... holder.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { buttonListener.buttonPressed(); } }); }
Übergeben Sie beim Erstellen des Adapters das Fragment als Argument:
MyListAdapter adapter = new MyListAdapter(getActivity(), myCursor, myFlags, this);
Dieser Mechanismus stellt sicher, dass das Fragment beim Klicken auf die Schaltfläche die Benachrichtigung über die implementierte Schnittstelle erhält.
Das obige ist der detaillierte Inhalt vonWie kommuniziere ich zwischen einem Fragment und seinem Adapter mithilfe eines ereignisgesteuerten Schaltflächenklicks?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!