透過事件驅動的按鈕點擊來連接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中文網其他相關文章!