headers 的多级可扩展列表视图

Multilevel Expandable List View with headers

我正在尝试使用 headers 实现看起来 this 的多级可扩展列表视图。在这里,在图片中,类别 A 和 I 只是 headers,不可点击。展开的类别是类别 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": []
  }
]
}
]

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

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

java class 结构应该是这样的:

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

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

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

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

在您的适配器中 class 检查级别并根据级别绑定适当的布局,并将适当的布局重新分配给 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)

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