在Fragment 和Adapter 之間建立介面
當處理包含ListView 和自訂CursorAdapter 的Fragment 時,在它們之間建立通訊變得至關重要。為了實現這一點,介面可以提供一個乾淨且有效率的解決方案。
介面定義
在適配器類別中,定義一個接口,定義當按鈕被按下。例如:
public interface AdapterInterface { public void buttonPressed(); }
適配器實作
將一個建構函數,用於初始化介面的實例變數:
public MyListAdapter(Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context, c, flags); this.buttonListener = buttonListener; }
在bindView()方法中,點擊按鈕時,呼叫介面上的buttonPressed()方法:
@Override public void bindView(...) { ... holder.button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { buttonListener.buttonPressed(); } }); }
Fragment實作
中實作AdapterInterface片段類別並重做寫buttonPressed()方法:
public class MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // Custom action to be performed } }
初始化
建立適配器時,將片段當作參數傳遞給建構函式:
MyListAdapter adapter = new MyListAdapter(getActivity(), myCursor, myFlags, this);
註解
以上是如何在Fragment與其CursorAdapter之間建立通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!