在我的应用程序中,我创建了简单的接口,在将适配器项目单击到父活动后进行检测。之后创建接口和方法到适配器我不能如何使用此接口来调用监听器,例如:
接口类:
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();
}
});
现在如何将监听器调用到适配器?
答案 0 :(得分:0)
如果您想触发/调用回调,只需调用
即可boolean click = true
iOnClickOnNiyazmandihaListListener.onLogin(click)
来自适配器类
答案 1 :(得分:0)
老实说,如果您打算在适配器内部注册click事件,则必须传递被单击项目的位置,而不是传递布尔值来检查是否单击了项目。这样,您将获得许多选项来处理单击的项目回调。
根据您的用例,这是我的简单实现。
您的接口类只需要做一些小改动,如下所示:
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"
}}
在适配器类中,在根public interface IOnClickListListener {
public void onClick(int positionOfItem);
}
的{{1}}处,必须考虑到onClick()
是您的成员变量,以以下方式调用接口的方法适配器类
setOnClickListener
其中iOnClickOnNiyazmandihaListListener
作为参数传递给iOnClickOnNiyazmandihaListListener.onClick(position)
,它是被单击项目的实际位置。
通过这种方式,无论您想在何处调用此position
方法,都必须在该类中提供接口的实现,以实现在setOnClickListener
被单击时如何处理单击位置。触发。
因此,每当单击任何列表项时,都将使用onClick()
方法的自定义实现,并且将调用放置在该实现方法中的代码。
示例:
假设您在一个活动中实现了此接口,然后它告诉您在该活动中覆盖界面的onClick()方法,即,即。提供onClick()实施
因此onClick()的实现如下所示:
onClick()
为此,您的班级必须以onClick()
作为起点。