Android ListView中的performItemClick不';t突出显示项目

Android ListView中的performItemClick不';t突出显示项目,android,Android,然后我将列表视图设置为: <ListView android:id="@+id/list_menu_nav" android:layout_width="250dp" android:layout_height="wrap_content" android:choiceMode="singleChoice" android:listSelector="#fff"> </ListView> 我知道之所以选择它,是因为其他一切都按预期

然后我将
列表视图设置为:

<ListView
    android:id="@+id/list_menu_nav"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:choiceMode="singleChoice"
    android:listSelector="#fff">
</ListView>
我知道之所以选择它,是因为其他一切都按预期工作(调用了侦听器,
getCheckedItemPosition
返回正确的值)


在这种情况下,正确的方法是什么?将该布局替换为自定义布局,并自行将其设置为高亮显示,或者是否有方法使用相同的默认布局?

根据以下内容,您只需使用
TextView

因此,这种行为是意料之中的。您必须为item元素创建自己的布局,以自定义选定状态。请看这里:


无法执行
setSelection
setItemChecked
performItemClick
、扩展
ListView
或您想执行的任何操作。
AbsListView
使用一个名为
positionSelector
的私有方法来执行此操作。这只在其他私有方法中调用,并在调用positionSelector之前进行检查以确保有用户交互

您唯一可以做的解决方法是强制触摸事件:

View temp = navMenu.getChildAt( 1 );
navMenu.onTouchEvent( MotionEvent.obtain( SystemClock.uptimeMillis(), 
    SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, temp.getX(), temp.getY(), 0 ) );

在执行单击之前,您可能需要使项目无效。我对它进行了测试。它也不起作用,
navMenu.invalidate()
navMenu.requestLayout()
执行单击后:\@据推测,EugenMartynov
listSelector
标记列表中选择的内容。按照你所说的,也许android团队应该将名称改为类似于
ListSelector for UserClicks
。然后使用
selector
。真神奇。它有错误返回错误。但我周围都是试捕,这对我来说是个例外。。
navMenu.performItemClick( navMenu.getChildAt( 1 ), 1, navMenu.getAdapter().getItemId( 1 ) );
View temp = navMenu.getChildAt( 1 );
navMenu.onTouchEvent( MotionEvent.obtain( SystemClock.uptimeMillis(), 
    SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, temp.getX(), temp.getY(), 0 ) );