首頁 > Java > java教程 > 如何使用事件驅動的按鈕點擊在片段與其適配器之間進行通訊?

如何使用事件驅動的按鈕點擊在片段與其適配器之間進行通訊?

DDD
發布: 2024-11-19 10:09:02
原創
585 人瀏覽過

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

透過事件驅動的按鈕點擊來連接Fragment 和Adapter

要在Fragment 與其關聯的Adapter 之間進行事件通信,可以實現一個介面在Adapter 類別中。在這種情況下,名為 MyListFragment 的 Fragment 包含一個使用自訂 CursorAdapter 的 ListView。點擊清單行中的按鈕後,需要向 Fragment 發送通知。

解決方案涉及在Adapter 類別中建立一個介面:

public class MyListAdapter extends CursorAdapter {

    public interface AdapterInterface {
        void buttonPressed();
    }

    ...
}
登入後複製

在Fragment 類別中( MyListFragment),實作AdapterInterface:

public class MyListFragment extends Fragment implements AdapterInterface {

    @Override
    public void buttonPressed() {
        // Some action
    }
}
登入後複製

Fragment,修改Adapter class:

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;
    }

    ...
}
登入後複製

在Adapter的bindView方法中,定義按鈕點擊行為:

@Override
public void bindView(View view, Context context, Cursor cursor) {
    ...

    holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonListener.buttonPressed();
        }
    });
}
登入後複製

創建Adapter時,將Fragment作為參數傳遞:

MyListAdapter adapter = new MyListAdapter(getActivity(), myCursor, myFlags, this);
登入後複製

這個機制保證了當按鈕被點擊時,Fragment 透過實現的介面接收到通知。

以上是如何使用事件驅動的按鈕點擊在片段與其適配器之間進行通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板