我尝试了以下但没有运气,因为getChildAt总是返回null(我确定listView已填满)。
listView.performItemClick(listView.getChildAt(0), 0, listView.getChildAt(0).getId());
有什么建议吗?谢谢!
已编辑:将项目添加到列表中的代码
lvAdapter = new ActionStreamAdapter<HasDescription>(getBaseContext());
while ((item = actionStreamQueue.poll()) != null) {
...
lvAdapter.addItem(item);
}
ListView.setAdapter(lvAdapter);
其中 ActionStreamAdapter 是一个扩展 BaseAdapter 的类。通过调用简单数据sturcure类的Dao来填充队列。
答案 0 :(得分:1)
孩子和物品之间存在差异。子视图是视图层次结构中较低的视图。例如,当包含两个TextView的LinearLayout时,TextViews是LinearLayout的子项。 ListView有项目。它们与ListView处于同一层次结构级别,因此它们不是子级。它们是ListView的项目。您应该使用ListView.getItemAtPosition()代替。
然后,选择和点击之间存在差异。单击表示对项目执行操作,然后选择突出显示该项目。要选择第一项,您应该执行以下操作:ListView.getItemAtPosition(n).requestFocus()
答案 1 :(得分:0)
这是一个有趣的API,它采用viewitem的指针,通常listview项目被回收,因此位置0的项目不必是适配器上的第0项。您可以使用findViewWithTagTraversal()来查找视图并对其进行选择。
如果你不介意你想对选择做什么,或者你想把焦点放在第一个项目上?
您可以使用setSelection()