在我的应用程序中,我有一个包含列表视图的左窗格。在此列表视图中进行的选择会调用相关数据,从而更新右窗格以及活动中的其他链接和元素。由于这种设计,左窗格必须始终进行选择,以便为活动的其余部分提供有用的值。
在我的活动的 onCreate 方法中,我调用以下命令以默认选择列表中的第一个元素。(programList 是我的列表视图)
programList.performItemClick(programList, 0, programList.getItemIdAtPosition(0);
这一切都很好,并且视图按预期加载正确的值,除了一件事。
我为列表视图添加了一个可绘制的选择器,它突出显示了选定的元素。当在模拟器中物理单击该项目时,它会突出显示(我使用的是 CHOICE_MODE_SINGLE),但在调用 performItemClick() 时它不会突出显示。我四处寻找有关stackoverflow的帮助,并尝试在单击之前使用以下内容,但这并没有什么不同。
programList.requestFocusFromTouch();
programList.setSelection(0);
从读取 API 看来,setSelection 方法并没有在触摸界面下设置项目的状态,从我的结果来看,performItemClick 方法似乎也没有。我也尝试使用
programList.getAdapter().getView(0, null, null).setSelected(true);
然后我可以读取文本视图的状态并看到它已被选中,但这也没有改变屏幕上显示的内容。
onCreateMethod 中是否存在阻止按钮状态以不同方式绘制的内容?我尝试使单个文本视图中的可绘制对象无效并使文本视图本身无效,但这没有帮助。我还尝试更改文本视图的背景,但似乎我设置的选择器控制它或绘制在前面。我知道我有正确的 textView 因为我使用 getText 来阅读里面的内容。
如果有人能够帮助我解决这个问题或指出我的解决方案,将不胜感激。