实现片段和适配器之间通信的接口
在所描述的场景中,您有一个片段,MyListFragment, 包含一个 ListView 和一个自定义CursorAdapter. 您的目标是在列表的特定行中按下按钮时通知 MyListFragment。为了实现这种通信,您可以采用基于接口的方法。
在 MyListAdapter 中,定义一个接口 AdapterInterface,以及一个回调方法 buttonPressed (), 点击按钮时调用:
public class MyListAdapter extends CursorAdapter { public interface AdapterInterface { public void buttonPressed(); } ... }
下一步,修改MyListAdapter 包含 AdapterInterface 类型的实例变量以及接受此接口的实例作为参数的构造函数:
private AdapterInterface buttonListener; public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context,c,flags); this.buttonListener = buttonListener; }
In MyListFragment,实现 AdapterInterface 并覆盖buttonPressed(), 将从适配器中 AdapterView 的 onClickListener 调用:
public MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // ... } }
最后,实例化 MyListFragment 内的 >MyListAdapter并将 MyListFragment 本身的实例作为参数传递给适配器的构造函数:
MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);通过这样做,
MyListAdapter 可以调用 buttonPressed()每当列表行中的按钮按下时 MyListFragment 的 方法按下。这允许适配器和片段之间的无缝通信,使您能够在单击按钮时采取必要的操作。
以上是如何使用接口在片段与其适配器之间进行通信?的详细内容。更多信息请关注PHP中文网其他相关文章!