从多个类调用setOnClickListener只会导致一个回调吗?

Jef*_*rod 5 android listview onitemclicklistener android-view onclicklistener

我希望能够改变OnItemClickListenerListView动态.但是,API不清楚这是否可以接受,也不清楚如果我这样做会产生什么结果.

我想要的是,如果我listView.setOnItemClickListener()从一个类调用,然后再从另一个类调用,那么只有最近的类才能获得回调.

顺便提一下这个问题也适用于SetOnClickListener().

可以实现API以这种方式运行,但是可以实现它以便所有调用的类setOnItemClickListener获得回调.

Android API实际实现了哪些行为?

yor*_*rkw 9

在这里查看AdapterView.setOnItemClickListener()源代码:

/**
 * Register a callback to be invoked when an item in this AdapterView has
 * been clicked.
 *
 * @param listener The callback that will be invoked.
 */
public void setOnItemClickListener(OnItemClickListener listener) {
    mOnItemClickListener = listener;
}
Run Code Online (Sandbox Code Playgroud)

在Java世界中,通常setter方法将刷新先前的值并将对象的实例变量设置为新值.所以你所谈论的行为只是最近的一个类获得回调.


它可能实现为调用setOnItemClickListener的所有类都获得回调.

在Java世界中,这也是可能的,在这种情况下,作为一个良好的面向对象编程惯例,我们通常将其命名为addOnItemClickListener(),这是更具体的,使用监听器店的List /管理多重听众实际执行中.这不是AdapterView.setOnItemClickListener()在API中实现的方式.