Erstellen einer Schnittstelle zwischen Fragment und Adapter
Beim Umgang mit einem Fragment, das eine ListView und einen benutzerdefinierten CursorAdapter enthält, ist die Herstellung der Kommunikation zwischen ihnen von entscheidender Bedeutung . Um dies zu erreichen, können Schnittstellen eine saubere und effiziente Lösung bieten.
Schnittstellendefinition
Definieren Sie in der Adapterklasse eine Schnittstelle, die die Methode definiert, die aufgerufen werden soll, wenn die Taste gedrückt wird. Zum Beispiel:
public interface AdapterInterface { public void buttonPressed(); }
Adapterimplementierung
Fügen Sie dem Adapter einen Konstruktor hinzu, der eine Instanzvariable für die Schnittstelle initialisiert:
public MyListAdapter(Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context, c, flags); this.buttonListener = buttonListener; }
Rufen Sie in der bindView()-Methode beim Klicken auf die Schaltfläche die buttonPressed()-Methode auf Schnittstelle:
@Override public void bindView(...) { ... holder.button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { buttonListener.buttonPressed(); } }); }
Fragment-Implementierung
Implementieren Sie das AdapterInterface in der Fragment-Klasse und überschreiben Sie die buttonPressed()-Methode:
public class MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // Custom action to be performed } }
Initialisierung
Übergeben Sie beim Erstellen des Adapters das Fragment als Argument an der Konstruktor:
MyListAdapter adapter = new MyListAdapter(getActivity(), myCursor, myFlags, this);
Hinweise
Das obige ist der detaillierte Inhalt vonWie stelle ich eine Kommunikation zwischen einem Fragment und seinem CursorAdapter her?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!