如何模拟ListView中第一个项目(或任何位置)的选择?

时间:2011-12-20 16:32:51

标签: android android-listview

我尝试了以下但没有运气,因为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来填充队列。

2 个答案:

答案 0 :(得分:1)

孩子和物品之间存在差异。子视图是视图层次结构中较低的视图。例如,当包含两个TextView的LinearLayout时,TextViews是LinearLayout的子项。 ListView有项目。它们与ListView处于同一层次结构级别,因此它们不是子级。它们是ListView的项目。您应该使用ListView.getItemAtPosition()代替。

然后,选择和点击之间存在差异。单击表示对项目执行操作,然后选择突出显示该项目。要选择第一项,您应该执行以下操作:ListView.getItemAtPosition(n).requestFocus()

答案 1 :(得分:0)

这是一个有趣的API,它采用viewitem的指针,通常listview项目被回收,因此位置0的项目不必是适配器上的第0项。您可以使用findViewWithTagTraversal()来查找视图并对其进行选择。

如果你不介意你想对选择做什么,或者你想把焦点放在第一个项目上?

您可以使用setSelection()