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)
并将点击事件分配给可点击的布局,并根据级别检查布局中每个项目的可见性,
这清楚还是需要更多描述?
我正在尝试使用 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)
并将点击事件分配给可点击的布局,并根据级别检查布局中每个项目的可见性,
这清楚还是需要更多描述?