当前位置: 首页 > 面试题库 >

Java如何在Fragment和适配器之间创建接口?

华旭
2023-03-14
问题内容

我有一个片段ListView,比如MyListFragment,和自定义CursorAdapter。我onClickListener在此适配器中为列表行中的按钮设置。

public class MyListAdapter extends CursorAdapter {

    public interface AdapterInterface {
        public void buttonPressed();
    }

    ...

    @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) {
                // some action
                // need to notify MyListFragment
            }
        });
    }
}

public MyListFragment extends Fragment implements AdapterInterface {

    @Override
    public void buttonPressed() {
        // some action
    }
}

按下按钮时,我需要通知片段。如何调用此接口?

请帮助。


问题答案:

创建一个新的构造函数和一个实例变量:

AdapterInterface buttonListener;

public MyListAdapter (Context context, Cursor c, int flags, AdapterInterface buttonListener)
{
  super(context,c,flags);
  this.buttonListener = buttonListener;
}

制作适配器时,将为实例变量提供适当的引用以进行保存。

要通过点击调用片段,请执行以下操作:

public void onClick(View v) {
   buttonListener.buttonPressed();
}

制作时Adapter,您还必须将片段传递给适配器。例如

MyListAdapter adapter = new MyListAdapter (getActivity(), myCursor, myFlags, this);

因为this它将引用您的Fragment,现在是AdapterInterface

请记住,在片段更改的方向上,很可能会重新创建它。如果未重新创建适配器,则它可能会保留对不存在对象的引用,从而导致错误。



 类似资料:
  • 问题内容: 我必须链接两个容器,以便它们可以互相看到。当然以下… …在第1行失败,因为容器需要启动并运行才能成为链接目标: 创建双向链接的最简单方法是什么? 问题答案: Docker 1.10通过引入高级容器网络很好地解决了这一问题。(详细信息:https : //docs.docker.com/engine/userguide/networking/dockernetworks/) 首先,创建一

  • 适配器目录和文件结构 适配器目录和文件结构布局的例子: /application/libraries/Driver_name Driver_name.php drivers Driver_name_subclass_1.php Driver_name_subclass_2.php Driver_name_subclass_3.php 注意: 为了在大小写敏感的文件系统上维持兼容性,这个 Drive

  • 问题内容: 可以给我打电话吗,如何在Java中创建一个普遍使用的连接器。我对此很陌生,我从不知道要从哪里开始,请告诉我如何为pervasive创建连接器。我创建了示例连接器,但我不确定它是对还是错 问题答案: 这是一个简单的程序,可以连接到PSQL数据库: 要编译它,我使用: 为了运行它,我使用: 如果使用的是64位操作系统,则可能需要更改PSQL JAR文件的位置。

  • 问题内容: 我的片段中有一个方法。此方法启动一个新的活动。我想从我的调用此方法。 这是我的代码: HomeFragment.java StaggeredAdapter.java 我该怎么做? 问题答案: 编辑: 这是我现在要使用的。下面提供了较旧的“更轻松”的解决方案。 现在,可以从适配器中的任何位置调用该片段中的方法。 而且,除了通过构造函数提供侦听器之外,我们还可以在适配器中添加另一个方法,例

  • 我已经下载了最新版本的eclipse和最新版本的javafx,创建了一个包含所有javafx文件的新用户库(我已经使用了本教程)。 我注意到,与旧的eclipse版本不同,在最新的eclipse中没有“场景构建器路径”设置,当我试图创建新项目时,也没有“JavaFX项目”(我记得有这个选项可以自动创建一个fxml文件和控件,主类) (我知道有一种叫做e(fx)clipse的东西,但我认为它已经过时

  • 我有3个模型:用户、宠物和诊所。 让我们假设表格:用户、宠物和诊所。关系是,一个用户可以有多个宠物,而一个宠物只有一个诊所。 在“Pets”表中,我有一个FK到用户id,另一个FK到诊所id。 我想做一些类似的事情: 在用户模型上,返回与用户关联的所有不同诊所。现在我只能做: 但我只想返回不同的诊所。 用户模态: 宠物模式: 有什么建议吗?