Android:将程序单击的listview项设置为选定状态

Android:将程序单击的listview项设置为选定状态,android,listview,selection,statelistdrawable,Android,Listview,Selection,Statelistdrawable,在我的应用程序中,我有一个包含列表视图的左窗格。然后,在此列表视图中所做的选择将调用相关数据(更新右侧窗格)以及活动中的其他链接和元素。由于这种设计,左窗格必须始终进行选择,以便为“活动”的其余部分提供有用的值 在我的活动的onCreate方法中,我调用以下命令,以便在默认情况下选择列表中的第一个元素。(programList是我的listview) 这一切都很好,并且视图以正确的值按预期加载,除了一件事 我为listview添加了一个可绘制的选择器,它高亮显示所选元素。当在emulator中实

在我的应用程序中,我有一个包含列表视图的左窗格。然后,在此列表视图中所做的选择将调用相关数据(更新右侧窗格)以及活动中的其他链接和元素。由于这种设计,左窗格必须始终进行选择,以便为“活动”的其余部分提供有用的值

在我的活动的onCreate方法中,我调用以下命令,以便在默认情况下选择列表中的第一个元素。(programList是我的listview)

这一切都很好,并且视图以正确的值按预期加载,除了一件事

我为listview添加了一个可绘制的选择器,它高亮显示所选元素。当在emulator中实际单击该项时,它将高亮显示(我使用的是CHOICE_MODE_SINGLE),但在调用performItemClick()时它不会高亮显示。我已经四处寻找stackoverflow的帮助,并尝试在单击之前使用以下内容,但没有任何区别

    programList.requestFocusFromTouch();
    programList.setSelection(0);
从API的阅读来看,setSelection方法似乎没有在触摸界面下设置项目的状态,从我的结果来看,performItemClick方法似乎也没有。我也试着用

    programList.getAdapter().getView(0, null, null).setSelected(true);
然后我可以读取文本视图的状态并查看它是否被选中,但这也不会改变屏幕上显示的内容

onCreateMethod中是否存在阻止按钮状态以不同方式绘制的内容?我尝试在单独的文本视图中使可绘制文件无效,并使文本视图本身无效,但这没有帮助。我还尝试更改文本视图的背景,但似乎我设置的选择器控制该文本视图或在前面绘制。我知道我有正确的文本视图,因为我使用了getText来阅读里面的内容


如果有人能帮我解决这个问题或给我指点解决办法,我将不胜感激

诀窍是覆盖适配器的
getView()
方法。试试这个:

@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图){
最终视图渲染器=super.getView(位置、转换视图、父级);
if(位置==所选项目的索引){
renderer.setBackgroundResource(android.R.color.dark_gray);
}
返回渲染器;
}

当然,您可以将背景颜色设置为您喜欢的任何颜色,以表示它是“活动”项。

谢谢。有没有办法通过使用listview.setSelector()方法来实现这一点,或者我必须使用getView()设置我的其余状态setSelector更方便,因为它只是一个xml资源。我希望我知道当我在emulator中用鼠标单击时与通过编程调用click事件时会发生什么不同。这不会让我取消选择该项,即使我在您的语句中添加了else,并设置为其他颜色。Get view仅在视图加载时最初调用。设置列表视图项的背景后,它将保持这种状态。他给了我最接近的解释,但他的解释不完整。我如何才能得到所选项目值的索引
    programList.getAdapter().getView(0, null, null).setSelected(true);