无法使用setFocusableInTouchMode选择ListView的项目(true)

时间:2011-12-28 13:04:00

标签: android android-listview android-ui

我遇到了这样的常见问题,但我还是无法解决。当我的应用程序的活动开始时,设备默认处于触摸模式。

我想实现一些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()但它没有帮助我。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

简短回答:setSelection没有做你想做的事 - 它意味着另一件事。

根据setSelection文档:

  

如果处于触摸模式,则不会选择该项目,但它仍然是   适当定位。

这就是你看到定位的原因。

另请参阅Touch Mode文档: http://developer.android.com/resources/articles/touch-mode.html

  

在触控模式下,没有焦点也没有选择。任何选定的项目   一旦用户输入,就在网格列表中取消选择   触摸模式。同样,任何有焦点的小部件都会变得没有焦点   用户进入触摸模式。下图说明了什么时候会发生什么   用轨迹球选择项目后,用户触摸列表。


有关可能的解决方案,请参阅以下帖子: Highlight ListView selected row