我遇到了这样的常见问题,但我还是无法解决。当我的应用程序的活动开始时,设备默认处于触摸模式。
我想实现一些listview项的选择,当用户点击一些按钮并使用以下代码时:
...
// my activity, inside onCreate()
myListView.setFocusable(true);
myListView.setFocusableInTouchMode(true);
button.setOnClickListener(
new OnClickListener {
public void onClick(View v) {
myListView.setSelection(specifiedPosition);
}
}
);
...
但即使有了这个逻辑,ListView也只是将指定的项目设置在其自身的顶部而不突出显示它们。
我也尝试使用requestFocus()但它没有帮助我。我该如何解决这个问题?
答案 0 :(得分:0)
简短回答:setSelection没有做你想做的事 - 它意味着另一件事。
根据setSelection文档:
如果处于触摸模式,则不会选择该项目,但它仍然是 适当定位。
这就是你看到定位的原因。
另请参阅Touch Mode文档: http://developer.android.com/resources/articles/touch-mode.html
在触控模式下,没有焦点也没有选择。任何选定的项目 一旦用户输入,就在网格列表中取消选择 触摸模式。同样,任何有焦点的小部件都会变得没有焦点 用户进入触摸模式。下图说明了什么时候会发生什么 用轨迹球选择项目后,用户触摸列表。
有关可能的解决方案,请参阅以下帖子: Highlight ListView selected row