15

我希望在 ListView 的项目上设置一个 onClickListener,但我看到了两种方法setOnItemClickListenersetOnItemSelectedListener. 我没有在官方文档中找到对这两者的任何合理解释。哪一个用于什么目的?

要选择一个项目,用户必须单击该项目,那么不同的方法有什么用?

4

5 回答 5

22

它像是

单击项目(单选)与选择项目(用于多选)

于 2012-09-06T05:54:43.150 回答
4

它们的描述中介绍了这些方法之间的区别:

has been selected vs has been clicked

实际上,区别与Android术语中的selectedclicked之间的区别是一样的。选择它更像是高亮,请参阅此处有关选择状态的更详细说明(在 android:state_selected 下)。单击与 android 术语中的按下相同,并在相同的链接下但在 android:state_pressed 下进行了描述。

于 2012-09-06T05:50:53.877 回答
3

不一定是真的。您可以拥有一个可以使用键盘或加速度计导航的 ListView。同样,单击一个项目并不一定意味着选择它 - 可能在您想要阻止选择之后选择某些内容直到发生其他事件。

出于所有目的,如果您想对项目的选择做出反应,请使用 ,setOnItemSelectedListener但如果您想对用户单击它们做出反应,请使用setOnItemClickListener

于 2012-09-06T05:45:42.673 回答
0

我认为OnItemSelectedListener当使用键盘的导航键或使用 tackball 选择列表中的项目时调用。

于 2012-09-06T05:46:36.120 回答
-1

I am not sure but it is my opinion.Might be wrong. setOnItemClickListener:Register a callback to be invoked when an item in this AdapterView has been clicked.It always return true.

setOnItemSelectedListener:Register a callback to be invoked when an item in this AdapterView has been clicked.it return true and also false. If not selected any item then it will show nothing is selected.It is just force to user that select an option.Select an item and go next just kind of that. But when user forgot to select an item then if will remembered also user that he did not select any option.

于 2012-09-06T07:28:00.797 回答