【问题标题】:setOnItemClickListener VS setOnItemSelectedListener in ListView.ListView 中的 setOnItemClickListener VS setOnItemSelectedListener。
【发布时间】:2012-09-06 05:41:26
【问题描述】:

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

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

【问题讨论】:

    标签: android listview android-listview onclicklistener onitemclicklistener


    【解决方案1】:

    好像

    项目被点击(单选)与项目被选中(用于多选)

    【讨论】:

    • +1 用于区分单选和多选。值得注意的是,对于通过搜索登陆这里的任何其他人,可以通过设置 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE) 设置单个选择
    【解决方案2】:

    这些方法之间的区别在它们的描述中给出:

    has been selected vs has been clicked
    

    实际上,区别与Android术语中的selectedclicked之间的区别是一样的。 选择更像是高亮,请参考selected state here(在android:state_selected下)更详细的解释。 Click 与 android 术语中的 pressed 相同,在同一链接下但在 android:state_pressed 下进行了描述。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我认为OnItemSelectedListener 是在使用键盘的导航键或使用定位球选择列表中的项目时调用的。

        【讨论】:

          【解决方案5】:

          我不确定,但这是我的意见。可能是错误的。 setOnItemClickListener:注册一个回调,当这个AdapterView中的一个item被点击时调用。它总是返回true。

          setOnItemSelectedListener:注册一个回调,以便在单击此 AdapterView 中的项目时调用。它返回 true 和 false。 如果未选择任何项目,则它将显示未选择任何内容。这只是强制用户选择一个选项。选择一个项目并继续下一步。 但是当用户忘记选择一个项目时,如果用户也记得他没有选择任何选项。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-04-05
            • 1970-01-01
            • 2015-12-17
            • 1970-01-01
            • 1970-01-01
            • 2011-06-10
            相关资源
            最近更新 更多