Android主详细信息流-仅在平板电脑上选择列表中的第一项
我根据Android Studio的“新建项目…”对话框中选择的默认“主细节流”模板创建了一个新应用程序。然后我调整了应用程序以适应我的需求和数据。在手持设备和平板电脑上的效果就像一个符咒 我唯一想实现的是自动选择列表中的第一项,显示详细视图并将列表项设置为选中 在“ItemListFragment”中,我在覆盖的“onStart()”方法中调用了“onListItemClick(…)”方法。这有以下行为:Android主详细信息流-仅在平板电脑上选择列表中的第一项,android,listview,orientation,tablet,Android,Listview,Orientation,Tablet,我根据Android Studio的“新建项目…”对话框中选择的默认“主细节流”模板创建了一个新应用程序。然后我调整了应用程序以适应我的需求和数据。在手持设备和平板电脑上的效果就像一个符咒 我唯一想实现的是自动选择列表中的第一项,显示详细视图并将列表项设置为选中 在“ItemListFragment”中,我在覆盖的“onStart()”方法中调用了“onListItemClick(…)”方法。这有以下行为: 旋转设备时,列表中的第一项被选中(而不是先前选中的) 列表项未被标记为列表中的选定项
- 旋转设备时,列表中的第一项被选中(而不是先前选中的)
- 列表项未被标记为列表中的选定项
您可以通过删除
ItemListFragment
的onStart(…)
中的onListItemClick(…)
调用来解决此问题,并将下面的代码段添加到setActivateOnItemClick(…)
的末尾:
另外,如果这一行代码不在onListItemClick(…)
的ItemListFragment
中,请添加这一行代码:
mActivatedPosition = position;
请检查我的GH repo上昨天提交的文件ChapterListFragment
中的差异,以获得我的解决方案的更多上下文-
希望这对您有所帮助我们的想法是,只有在您知道自己正在使用平板电脑时,才可以在主要活动中这样做。我不明白你为什么要调用
onListitemClick()
而不是ListView
上的setItemChecked()
。听起来很奇怪。但是我该怎么做呢?在我的“ItemListActivity”中,我使用了一个显示“ItemListFragment”的布局。片段包含ListView,而不是活动。如何从我的活动中访问片段中的ListView?基本主详细信息示例在平板电脑方向(activityonCreate()
method)中完全按照您的要求执行操作,当第二个容器存在时,活动将使用列表查找该片段,并对其调用调用setItemChecked()的方法
。在查看了“ItemListFragment”中的“onCreate”方法后,我仍然不清楚您的意思(参见我编辑的帖子)。@Klaus-您找到了这个问题的答案吗?我希望能解决同样的问题。我调整了我的应用程序,您的解决方案也能正常工作。谢谢分享。很高兴知道这一点,@Klaus
// If on dual-pane view, pre-select the first item from the chapter list
if (activateOnItemClick && mActivatedPosition == ListView.INVALID_POSITION) {
getListView().performItemClick(getListView(), 0, getListView().getItemIdAtPosition(0));
}
mActivatedPosition = position;