ListView中的setOnItemClickListener与setOnItemSelectedListener有何区别?

16
我希望为ListView的项目设置一个onClick监听器,但我看到有两种方法:setOnItemClickListener和setOnItemSelectedListener。在官方文档中我没有找到任何解释这两个方法的合理说明。我应该使用哪个方法来实现什么目的?
当用户点击一个项目以选择它时,不同的方法有什么用途呢?
5个回答

22

这就像是单击项目(单选)与选择项目(用于多选)的区别。


2
对于单选和多选的区别,加1分。值得注意的是,任何从搜索中着陆到此处的人都可以通过设置listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE)来进行单选。 - Ben Pearson

4
这两种方法的区别在于它们的描述:
has been selected vs has been clicked

实际上,区别就像Android术语中“selected”和“clicked”的区别。 “Select”更像是突出显示,请参考有关“selected”状态的更详细解释这里(在android:state_selected下)。 点击与Android术语中的“pressed”相同,在相同的链接下描述但在android:state_pressed下。

3

不一定是这样的。您可以使用键盘或加速度计导航ListView。另外,点击一个项目并不意味着选择它 - 也许在选择某些内容后,您想阻止选择,直到发生其他事件。

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


0

我认为当使用键盘的导航键或使用轨迹球选择列表中的项目时,OnItemSelectedListener会被调用。


-1

我不确定,但这是我的观点。可能是错误的。 setOnItemClickListener:注册一个回调函数,在点击此AdapterView中的项目时被调用。它总是返回true。

setOnItemSelectedListener:注册一个回调函数,在点击此AdapterView中的项目时被调用。它既可以返回true,也可以返回false。 如果没有选择任何项目,则会显示未选择任何内容。它只是强制用户选择一个选项。选择一个项目并继续下一步就是这样的。 但是当用户忘记选择一个项目时,它将提醒用户他没有选择任何选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接