如何在ListFragment中触发onListItemClick

Ed *_*nek 6 android listview android-fragments

在我的应用程序的平板电脑布局中,我有三个ListFragments和一个常规Fragment,我们称之为Make,Model,Size和Details.最初填充Make列表,然后根据Make选择,填充Model列表; 选择模型时,将填充"大小"列表; 选择"大小"时,将显示"详细信息".这些事件中的每一个(列表项选择)都是通过onListItemClick处理程序处理的.

在启动时,我想填充Make列表,选择列表中的第一个Make并让它通过onListItemClick处理程序来填充Model列表(依此类推,以便填充所有列表并显示详细信息 - 这也应该是在任何列表中进行任何选择时的行为 - 选择下一个列表中的第一个项目,直到我们显示详细信息).请注意,我可以控制DB,对于每个Make,总会有至少一个Model,每个Make/Model至少有一个Size,每个Make/Model/Size只有一个Detail.

所以,我想选择列表中的第一项并让它触发onListItemClick处理程序.我已经尝试了以下(使用适当的边界检查等),但它不起作用.

getListView().setItemChecked(0, true);
Run Code Online (Sandbox Code Playgroud)

对"开箱即用"ListFragment的唯一更改是将CacheColorHint设置为这样

getListView().setCacheColorHint(R.color.GhostWhite);
Run Code Online (Sandbox Code Playgroud)

其中GhostWhite在styles.xml中设置为

<color name="GhostWhite">#88FFFFFF</color>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

提前致谢.

Ed *_*nek 14

要选择列表中的第一个项目,首先从触摸获得焦点,然后选择第一个项目,然后触发onclick处理程序

int position = 0;
getListView().requestFocusFromTouch();
getListView().setSelection(position);
getListView().performItemClick(getListView().getAdapter().getView(position, null, null), position, position);
Run Code Online (Sandbox Code Playgroud)