Android为onClick in Adapter创建接口监听器

时间:2015-02-09 20:26:04

标签: android

在我的应用程序中,我创建了简单的接口,在将适配器项目单击到父活动后进行检测。之后创建接口和方法到适配器我不能如何使用此接口来调用监听器,例如:

接口类:

public interface IOnClickListListener {
    public void onClick(boolean click);
}

summurized适配器:

private static class ViewHolder {
    public ViewHolder(View view) {
    }

    public void fill(final ArrayAdapter<SubjectListStructure> adapter, final SubjectListStructure item, final int position) {
        root.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /* call interface to listen that */
            }
        });
    }
}

public void setOnClickListener(IOnClickOnNiyazmandihaListListener l){
    iOnClickOnNiyazmandihaListListener = l;
}
单击项目后,在此适配器中

,必须调用我的界面。现在我想通过这段代码听听活动:

subjects_adapter.setOnClickListener(new IOnClickOnNiyazmandihaListListener() {
                            @Override
                            public void onClick(boolean click) {
                                Toast.makeText(G.currentActivity,"ddddd", Toast.LENGTH_SHORT).show();
                            }
                        });

现在如何将监听器调用到适配器?

2 个答案:

答案 0 :(得分:0)

如果您想触发/调用回调,只需调用

即可
boolean click = true
iOnClickOnNiyazmandihaListListener.onLogin(click)

来自适配器类

答案 1 :(得分:0)

老实说,如果您打算在适配器内部注册click事件,则必须传递被单击项目的位置,而不是传递布尔值来检查是否单击了项目。这样,您将获得许多选项来处理单击的项目回调。

根据您的用例,这是我的简单实现。

  1. 您的接口类只需要做一些小改动,如下所示:

    ok: [127.0.0.1] => { "msg": { "ansible_job_id": "377685088849.225705", "changed": false, "finished": 1, "meta": { "error_message": null, "output": [ { "vm_hostname": "VIshnu-SSHTI1", "vm_ip": "10.19.180.68", "vm_name": "VIshnu_SSHTIMEOUT", "vm_uuid": "1f1697cb-5803-4631-8784-b73ef529b9ed" } ], "status": "success" }}

  2. 在适配器类中,在根public interface IOnClickListListener { public void onClick(int positionOfItem); }的{​​{1}}处,必须考虑到onClick()是您的成员变量,以以下方式调用接口的方法适配器类

setOnClickListener

其中iOnClickOnNiyazmandihaListListener作为参数传递给iOnClickOnNiyazmandihaListListener.onClick(position),它是被单击项目的实际位置。

通过这种方式,无论您想在何处调用此position方法,都必须在该类中提供接口的实现,以实现在setOnClickListener被单击时如何处理单击位置。触发。

因此,每当单击任何列表项时,都将使用onClick()方法的自定义实现,并且将调用放置在该实现方法中的代码。

示例:

假设您在一个活动中实现了此接口,然后它告诉您在该活动中覆盖界面的onClick()方法,即,即。提供onClick()实施

因此onClick()的实现如下所示:

onClick()

为此,您的班级必须以onClick()作为起点。