简介:
在片段和自定义光标适配器之间创建通信通道可以促进无缝数据交换以及这些之间的事件处理
问题:
片段包含与光标适配器关联的ListView。该适配器在每个列表行中都有一个带有 onClick 侦听器的按钮。目标是在按下此按钮时通知片段。
解决方案:
在适配器中定义接口:
在 Fragment 中实现 Interface:
将 Fragment 作为参数传递给适配器:
从适配器的 OnClickListener 调用接口:
示例代码:
public class MyListAdapter extends CursorAdapter { public interface AdapterInterface { public void buttonPressed(); } private AdapterInterface buttonListener; public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener) { super(context,c,flags); this.buttonListener = buttonListener; } @Override public void bindView(final View view, final Context context, final Cursor cursor) { ViewHolder holder = (ViewHolder) view.getTag(); ... holder.button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { buttonListener.buttonPressed(); } }); } } public MyListFragment extends Fragment implements AdapterInterface { @Override public void buttonPressed() { // some action } }
用法:
创建适配器的实例,传递片段作为参数:
MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
注意方向变化:
以上是如何实现Fragment和自定义光标适配器之间的通信?的详细内容。更多信息请关注PHP中文网其他相关文章!