Heim >Java >javaLernprogramm >Wie kommuniziere ich zwischen einem Fragment und seinem Adapter mithilfe eines ereignisgesteuerten Schaltflächenklicks?

Wie kommuniziere ich zwischen einem Fragment und seinem Adapter mithilfe eines ereignisgesteuerten Schaltflächenklicks?

DDD
DDDOriginal
2024-11-19 10:09:02594Durchsuche

How to Communicate Between a Fragment and its Adapter using an Event-Driven Button Click?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn