gpt4 book ai didi

android - DrawerLayout 和多 Pane 布局

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:50:56 25 4
gpt4 key购买 nike

我的应用程序使用 Multi Pane layout显示分配列表。每个 Assignment 都可以放在一个 AssignmentCategory 中。我想用 DrawerLayout显示所有 AssignmentCategories,以便用户可以在不同类别之间轻松切换。

我没有设法创建这样的布局。在官方DrawerLayout tutorial当用户点击一个项目时,DrawerLayoutActivity 会替换一个 Fragment(在我的例子中是一个 AssignmentCategory)。我面临的问题是多 Pane 布局需要 FragmentActivity。我不知道如何创建包含多 Pane 布局的 Fragment。有人设法做到这一点吗?

最佳答案

结合这两个项目应该不会太困难。在示例代码中,DrawerLayout 示例确实替换了内容 fragment ,但您不必这样做,您可以简单地更新相同的 fragment 以显示正确的数据。您可以通过这种方式实现这两个项目:

  • 从多 Pane 演示项目开始。
  • 将多 Pane 演示的两个 Activity 更新为扩展ActionBarActivity(v7),您不需要扩展FragmentActivity
  • 在开始列表 Activity 中实现 DrawerLayout(抽屉项目中的示例代码)代码(我假设您不想在细节中使用 DrawerLayout Activity ,但如果您愿意,实现它应该不是问题)。
  • 开始列表 Activity 的布局将是这样的(不要忘记您需要在 activity_item_twopane.xml 中实现 DrawerLayout 更改作为好吧!):

    <DrawerLayout>
    <fragment android:id="@+id/item_list" .../>
    <ListView /> <!-- the list in the DrawerLayout-->
    </DrawerLayout>
  • 更改 DrawerItemClickListener 的实现,这样当用户单击抽屉列表项时,您不会创建并添加新的列表 fragment ,而是更新布局中的单个列表 fragment :

    AssignmentListFragment alf = (AssignmentListFragment) getSupportFragmentManager()
    .findFragmentById(R.id.item_list);
    if (alf != null && alf.isInLayout()
    && alf.getCurrentDisplayedCategory() != position) {
    alf.updateDataForCategory(position); // the update method
    setTitle(DummyContent.CATEGORIES[alf.getCurrentDisplayedCategory()]);
    }
  • 更新方法应该是这样的:

    /**
    * This method update the fragment's adapter to show the data for the new
    * category
    *
    * @param category
    * the index in the DummyContent.CATEGORIES array pointing to the
    * new category
    */
    public void updateDataForCategory(int category) {
    mCurCategory = category;
    String categoryName = DummyContent.CATEGORIES[category];
    List<DummyContent.Assigment> data = new ArrayList<Assigment>(
    DummyContent.ITEM_MAP.get(categoryName));
    mAdapter.clear(); // clear the old dsata and add the new one!
    for (Assigment item : data) {
    mAdapter.add(item);
    }
    }

    public int getCurrentDisplayedCategory() {
    return mCurCategory;
    }

    -其他各种小改动

我做了一个示例项目来说明您可以进行的上述更改find here .

关于android - DrawerLayout 和多 Pane 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com