【问题标题】:Multilevel Expandable List View with headers带有标题的多级可扩展列表视图
【发布时间】:2018-09-22 06:53:33
【问题描述】:

我正在尝试实现一个多级可扩展列表视图,其标题看起来像 this。在这里,在图片中,A 类和 I 类只是标题,不可点击。展开的类别是类别 B、G、H、J。展开时,它看起来像类别 B 所示。

我希望它是动态的。通过说动态我的意思是,当我得到如下所示的 Json 时,它应该自动膨胀上述视图,如上所示。

[
{
"name": "Category A",
"secondary_class": [
  {
    "name": "Category B",
    "tertiary_class": [
      {
        "name": "Category C"
      },
      {
        "name": "Category D"
      },
      {
        "name": "Category E"
      },
      {
        "name": "Category F"
      }
    ]
  },
  {
    "name": "Category G",
    "tertiary_class": []
  },
  {
    "name": "Category H",
    "tertiary_class": []
  }
]
},
{
"name": "Category I",
"secondary_class": [
  {
    "name": "Category B",
    "tertiary_class": []
  },
  {
    "name": "Category J",
    "tertiary_class": []
  }
]
}
]

也欢迎有助于我实现这一点的想法。如果没有,请在我浏览所有可能的参考资料时向我推荐必要的参考资料,但找不到任何解决方案。

【问题讨论】:

    标签: android expandablelistview


    【解决方案1】:

    好的,你应该定义一个java类,一个自定义recyclerview适配器,自定义布局适配器并使用它们,但是如何?

    java类结构应该是这样的:

    public class Categories{
        String name;
        ArrayList<Categories> subCategories;
    }
    

    现在创建一个布局文件,其中包含一个用于固定标题的文本视图和一个用于子类别的回收器视图(第二个类别 B、G、H)
    然后为最后一级类别创建另一个布局,该布局具有可点击的标题布局和项目(C、D、E、F)的回收视图
    您可以将此布局合并为一个布局

    现在像这样创建一个回收视图:

    public categoriesAdapter(ArrayList<Categories> categoriesList, Context context ,int level, ...)
    

    在您的适配器类中检查级别并根据级别绑定适当的布局,并将适当的布局重新分配给recyclerviews,

    if(level==0)//start with 0
        inner_recyclerview.setAdapter(new categoriesAdapter(currentItem.subCategories,mContext,1)
    

    最后为最后一级创建另一个自定义recyclerview适配器并像这样使用它

    if(level==1)
        inner_recyclerview.setAdapter(new lastCategoriesAdapter(currentItem.subCategories,mContext,1)
    

    并将点击事件分配给可点击布局,并检查布局中每个项目的可见性取决于级别,
    这清楚还是需要更多描述?

    【讨论】:

      猜你喜欢
      • 2019-05-21
      • 2013-06-24
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多