【问题标题】:Setting setOnKeyListener for a ListView为 ListView 设置 setOnKeyListener
【发布时间】:2009-11-03 22:35:20
【问题描述】:

我一直在尝试设置OnKeyListener,但我不确定如何在View.OnKeyListener 中获取ListView 上的选定行。 v 参数总是给我ListView,而不是选定的行。知道如何解决这个问题吗?谢谢。

listView.setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {
        //....
    }

}

【问题讨论】:

  • 您可以调用列表视图上的 getCheckedItemPosition 来确定这一点吗? public int getCheckedItemPosition () 自:API 级别 1 返回当前检查的项目。如果选择模式已设置为Choice_Mode_single,则结果仅有效。返回 * 当前选中项的位置,如果未选择任何内容,则返回 INVALID_POSITION 另见 * setChoiceMode(int)

标签: android


【解决方案1】:

你可以使用AbsListView.getSelectedView()方法:

public boolean onKey(View v, int keyCode, KeyEvent event) {
    ListView listView = (ListView) v;
    if (listView.getSelectedView() != null) {
        // (cast if necessary) and use selected view
    }
}

如果您对所选项目的位置、id 或关联对象感兴趣,您可以相应地使用AdapterView.getSelectedItemPosition()AdapterView.getSelectedItemId()AdapterView.getSelectedItem() 方法。

【讨论】:

  • 如果getSelectedView() 总是返回空值,即使我将setSelection(index) 放在它的正上方,会有什么问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 2015-03-16
  • 2018-01-26
  • 2015-09-22
相关资源
最近更新 更多