在 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(); } }); }
片段实现
在片段类中实现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中文网其他相关文章!