首页 > Java > java教程 > 如何实现Fragment和自定义光标适配器之间的通信?

如何实现Fragment和自定义光标适配器之间的通信?

Patricia Arquette
发布: 2024-11-16 07:29:02
原创
423 人浏览过

How to Implement Communication Between a Fragment and a Custom Cursor Adapter?

连接片段和适配器

简介
在片段和自定义光标适配器之间创建通信通道可以促进无缝数据交换以及这些之间的事件处理

问题
片段包含与光标适配器关联的ListView。该适配器在每个列表行中都有一个带有 onClick 侦听器的按钮。目标是在按下此按钮时通知片段。

解决方案

  1. 在适配器中定义接口:

    • 使用方法在适配器类中创建 AdapterInterface buttonPressed().
  2. 在 Fragment 中实现 Interface:

    • 在 Fragment 类中,实现 AdapterInterface 并覆盖buttonPressed()
  3. 将 Fragment 作为参数传递给适配器:

    • 向适配器类添加一个构造函数接受 AdapterInterface 对象。
    • 实例化适配器时,传递片段(其中实现 AdapterInterface) 作为参数。
  4. 从适配器的 OnClickListener 调用接口:

    • 在适配器的 bindView( ) 方法,设置 onClick 监听器按钮。
    • 在监听器内,调用传入片段的buttonPressed()方法。

示例代码:

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
    }
}
登录后复制
  1. 用法:

    • 创建适配器的实例,传递片段作为参数:

      MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);
      登录后复制
  2. 注意方向变化

    • 请注意方向变化时的片段重新创建可能会导致对不存在的片段的延迟适配器引用。为了防止这种情况发生,请考虑重新创建适配器。

以上是如何实现Fragment和自定义光标适配器之间的通信?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板