Android 导航抽屉 - 多个部分

Android Navigation Drawer - Multiple sections

我正在构建一个导航抽屉,它将包含多个部分,如下所示:
Sliding Menu

物理学
物理学基础
物理七课
新物理学
物理学家的世界

科目
物理
化学
生物学
艺术

设置
关于
注销

第 1 部分:第 1 部分将根据第 2 部分中选择的主题加载图书列表。默认情况下,将加载第一个主题的图书列表。
第 2 部分:第 2 部分是学生已订阅的科目列表。
第 3 部分:所有学生都一样

为了填充导航抽屉 UI,我想出了一个如下所示的菜单结构:

图书菜单
ArrayList of Sections

栏目
部分 ID,
节 Header
ArrayList of Books

书籍
书号,
书名

我卡在以下项目上:
1. 从以 BookMenu 作为输入的适配器填充列表视图
2. 更改主题时仅动态更改第一部分

非常感谢对此的任何帮助!

谢谢!

注:附上图片

您可以通过不同的视图类型轻松完成。例如 -

class MyData{
    String text;
    boolean isHeader;
}
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    ArrayList<MyData> allData;
    class ViewHolder0 extends RecyclerView.ViewHolder {
        ...
    }

    class ViewHolder2 extends RecyclerView.ViewHolder {
        ...
    }

    @Override
    public int getItemViewType(int position) {
        // Just as an example, return 0 or 2 depending on list(let assume 0 for header 1 for data
        // Note that unlike in ListView adapters, types don't have to be contiguous
        return allData.get(position).isHeader?0:1;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
         switch (viewType) {
             case 0: return new ViewHolder0(header view);
             case 1: return new ViewHolder2(data view);
             ...
         }
    }
}

如果数据已更新,则只需更新您的数据列表并调用适配器上的 notifyDataSetChange()。

希望对您有所帮助:)