Android导航抽屉 - 多个部分

时间:2016-06-13 21:51:28

标签: android navigation

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

物理学     物理基础知识
    关于物理学的七个简要教训     新物理学     物理学家的世界

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

设置
    关于
    退出

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

要填充导航抽屉用户界面,我想出了如下所示的菜单结构:

BookMenu
    部分的ArrayList

部分
    部分ID,
    部分标题
    书籍的ArrayList

书籍     bookID,
    bookTitle

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

非常感谢任何帮助!

谢谢!

注意:附图像

1 个答案:

答案 0 :(得分:0)

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

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()。

希望它会对你有所帮助:)。