【问题标题】:Android Master Detail Flow - Select first item in list on tablet onlyAndroid Master Detail Flow - 仅在平板电脑上选择列表中的第一项
【发布时间】:2014-07-17 08:46:29
【问题描述】:

我创建了一个新应用,依赖于默认的“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);
    }
}

【问题讨论】:

  • 我们的想法是仅在您知道自己处于平板电脑方向时才在主要活动中执行此操作。我不明白你为什么在ListView 上打电话给onListitemClick() 而不是setItemChecked()
  • 听起来不错。但是我该怎么做呢?在我的“ItemListActivity”中,我使用了一个显示“ItemListFragment”的布局。该片段包含 ListView,而不是活动。如何从我的活动中访问片段中的 ListView?
  • 基本的主从示例完全按照您的意愿在平板电脑方向(活动onCreate() 方法)中,当第二个容器存在时,活动通过列表找到该片段并调用调用setItemChecked()的方法。
  • 查看“ItemListFragment”中的“onCreate”方法后,我仍然不清楚您的意思(请参阅我编辑的帖子)。
  • @Klaus - 你找到答案了吗?我正在寻求解决同样的问题

标签: android listview orientation tablet


【解决方案1】:

您可以通过删除ItemListFragmentonStart(...) 中的onListItemClick(...) 调用来解决此问题,而是将其添加到sn-p 下方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 存储库中提交的差异,以获得更多关于我的解决方案的上下文 - https://github.com/floydpink/BhagavadGita/compare/047de35c39f01c6341a7f677aa5b7cc47a7144a3...b1b45d15cd68290e2ebe909ca920bd7aefd2805e#diff-1

希望对你有帮助

【讨论】:

  • 太棒了。我调整了我的应用程序,您的解决方案有效。感谢分享。
  • 很高兴知道这一点,@Klaus
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多