【问题标题】:Android Navigation Drawer - Multiple sectionsAndroid 导航抽屉 - 多个部分
【发布时间】:2016-06-13 21:51:28
【问题描述】:

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

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

主题
物理学
化学
生物学
艺术

设置
关于
退出

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

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

BookMenu
节的ArrayList

部分
部分 ID,
节标题
图书数组列表

书籍
bookID,
书名

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

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

谢谢!

注意:附上图片

【问题讨论】:

    标签: android navigation


    【解决方案1】:

    您可以通过不同的视图类型轻松做到这一点。例如 -

    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);
                 ...
             }
        }
    }
    

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

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2019-09-10
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多