Android Master Detail Flow - 仅在平板电脑上选择列表中的第一项

时间:2014-07-17 08:46:30

标签: android listview orientation tablet

我依靠默认的“Master Detail Flow”模板创建了一个新的应用程序,该模板是在Android Studio的“New Project ...”对话框中选择的。然后我调整了应用程序以满足我的需求和数据。就像手持设备和平板电脑上的魅力一样。

我想要实现的唯一目的是自动选择列表中的第一项,显示详细视图并将列表项设置为选中。

在“ItemListFragment”中,我在覆盖的“onStart()”方法中调用了“onListItemClick(...)”方法。这有以下行为:

  • 旋转设备时,列表中的第一项被选中(不是之前选择的项目)
  • 列表项未在列表
  • 中标记为已选中

有人能指出我如何实现这一目标的正确方向。因为我只想在“平板电脑模式”中使用此行为,我想我必须将它放入ItemListActivity中?

由于

编辑:这是“ItemListActivity”的“onCreate”方法

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_item_list);
    if (findViewById(R.id.item_detail_container) != null) {
        mTwoPane = true;
        ((ItemListFragment) getFragmentManager()
                .findFragmentById(R.id.item_list))
                .setActivateOnItemClick(true);
    }
}

1 个答案:

答案 0 :(得分:3)

您可以通过移除onListItemClick(...) onStart(...) ItemListFragment中的setActivateOnItemClick(...)来解决这个问题,而是将以下代码段添加到 // 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)); } 的末尾:

onListItemClick(...)

另外,如果ItemListFragment中的 mActivatedPosition = position; 中尚未包含此代码,请添加以下代码:

ChapterListFragment

请在我的GH repo上查看昨天这些提交文件{{1}}上的差异,以便为我的解决方案提供更多背景信息 - https://github.com/floydpink/BhagavadGita/compare/047de35c39f01c6341a7f677aa5b7cc47a7144a3...b1b45d15cd68290e2ebe909ca920bd7aefd2805e#diff-1

希望这有帮助