Android 如何初始化数组<;列表<;模型>&燃气轮机;在科特林?
我有一个来自RESTAPI的JSON字符串,我将它绑定到Android 如何初始化数组<;列表<;模型>&燃气轮机;在科特林?,android,kotlin,expandablelistview,expandablelistadapter,Android,Kotlin,Expandablelistview,Expandablelistadapter,我有一个来自RESTAPI的JSON字符串,我将它绑定到List对象中。我已将所有类别/子类别数据放入此列表对象list,但我不知道如何将这些数据中的子类别划分为Array格式 如何将子类别列表添加到数组对象中?如何在Kotlin中声明和初始化数组 所有类别应采用列表格式,所有子类别应采用数组格式 例如: List<CategoryDO of Cat-1, CategoryDO of cat-2, ... etc> Array<List<CategoryDO of Su
List
对象中。我已将所有类别/子类别数据放入此列表对象list
,但我不知道如何将这些数据中的子类别划分为Array
格式
如何将子类别列表添加到数组对象中?如何在Kotlin中声明和初始化数组
所有类别应采用列表
格式,所有子类别应采用数组
格式
例如:
List<CategoryDO of Cat-1, CategoryDO of cat-2, ... etc>
Array<List<CategoryDO of SubCat-1 of Cat-1, CategoryDO of SubCat-2 of Cat-1>>, List<CategoryDO of SubCat-12 of Cat-2, CategoryDO of SubCat-22 of Cat-2>>, ...etc>>
我尝试将json数据放入recycler视图适配器,它正在工作,如果问题得到解决,您可以尝试
class HeroAdapter(val item: MutableList<Hero>, val context: Context, val itemClick:OnRecyclerViewItemClickListener) : RecyclerView.Adapter<HeroAdapter.ItemViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ItemViewHolder {
val v = LayoutInflater.from(parent?.context).inflate(R.layout.adapter_layout, parent, false)
return ItemViewHolder(v)
}
var onClickListener: OnRecyclerViewItemClickListener? = null
open interface OnRecyclerViewItemClickListener {
fun click(hero: Hero)
}
override fun onBindViewHolder(holder: ItemViewHolder?, position: Int) {
var hero: Hero = item[position]
onClickListener=itemClick
holder?.mTvName?.text = hero.getName()
holder?.mTvBio?.text = hero.getBio()
holder?.mTvReal?.text = hero.getRealname()
holder?.mTvFirst?.text = hero.getFirstappearance()
holder?.mTvTeam?.text = hero.getTeam()
holder?.mTvPublisher?.text = hero.getPublisher()
holder?.mTvCreate?.text = hero.getCreatedby()
Glide.with(context)
.load(hero.getImageurl())
.into(holder?.mIvImage)
holder?.itemView?.setOnClickListener(View.OnClickListener {
this.onClickListener?.click(hero)
})
}
override fun getItemCount(): Int {
return item.size
}
class ItemViewHolder : RecyclerView.ViewHolder {
var mTvName: TextView? = null
var mTvReal: TextView? = null
var mTvCreate: TextView? = null
var mTvBio: TextView? = null
var mTvTeam: TextView? = null
var mTvPublisher: TextView? = null
var mTvFirst: TextView? = null
var mIvImage: ImageView? = null
constructor(itemView: View) : super(itemView) {
mTvName = itemView.findViewById(R.id.alTvName)
mTvReal = itemView.findViewById(R.id.alTvRealName)
mTvFirst = itemView.findViewById(R.id.alTvFirst)
mTvCreate = itemView.findViewById(R.id.alTvcreatedby)
mTvBio = itemView.findViewById(R.id.alTvBio)
mTvTeam = itemView.findViewById(R.id.alTvTeam)
mTvPublisher = itemView.findViewById(R.id.alTvpublisher)
mIvImage = itemView.findViewById(R.id.alIvUserImage)
}
}
class-HeroAdapter(val-item:MutableList,val-context:context,val-itemClick:onRecycleServiceItemClickListener):RecycleView.Adapter(){
重写CreateViewHolder(父级:ViewGroup?,viewType:Int):ItemViewHolder{
val v=LayoutFlater.from(父级?.context)。充气(R.layout.adapter_布局,父级,false)
返回项目视图持有者(v)
}
var onClickListener:onRecycleServiceItemClickListener?=null
打开RecycleServiceItemClickListener上的界面{
趣味点击(英雄:英雄)
}
覆盖BindViewHolder(holder:ItemViewHolder?,位置:Int){
英雄:英雄=物品[位置]
onClickListener=itemClick
holder?.mTvName?.text=hero.getName()
holder?.mTvBio?.text=hero.getBio()
holder?.mTvReal?.text=hero.getRealname()
holder?.mTvFirst?.text=hero.getFirstappearance()
holder?.mTvTeam?.text=hero.getTeam()
holder?.mtvppublisher?.text=hero.getPublisher()
holder?.mTvCreate?.text=hero.getCreatedby()
带(上下文)滑动
.load(hero.getImageurl())
.插入(支架?.mIvImage)
holder?.itemView?.setOnClickListener(View.OnClickListener{
此.onClickListener?.click(英雄)
})
}
重写getItemCount():Int{
返回项目。大小
}
类ItemViewHolder:RecyclerView.ViewHolder{
var mTvName:TextView?=null
var mTvReal:TextView?=null
var mTvCreate:TextView?=null
var mTvBio:TextView?=null
var mTvTeam:TextView?=null
var mtvppublisher:TextView?=null
var mTvFirst:TextView?=null
变量mIvImage:ImageView?=null
构造函数(itemView:View):超级(itemView){
mTvName=itemView.findViewById(R.id.alTvName)
mTvReal=itemView.findviewbyd(R.id.alTvRealName)
mTvFirst=itemView.findViewById(R.id.alTvFirst)
mTvCreate=itemView.findViewById(R.id.alTvcreatedby)
mTvBio=itemView.findViewById(R.id.alTvBio)
mTvTeam=itemView.findviewbyd(R.id.alTvTeam)
mTvPublisher=itemView.findViewById(R.id.alTvpublisher)
mIvImage=itemView.findviewbyd(R.id.alIvUserImage)
}
}
}如果需要将列表
转换为数组
,其中内部列表是每个类别的子类别列表,则可以映射原始列表并将结果转换为数组
// Given
val categories: List<CategoryDO> = TODO()
val allSubCats: Array<List<CategoryDO>> =
categories.map { it. subCategories }.toTypedArray()
//给定
val类别:列表=TODO()
val allSubCats:数组=
categories.map{it.subCategories}.toTypedArray()
请首先生成json字符串示例谢谢,托德。效果很好。
class HeroAdapter(val item: MutableList<Hero>, val context: Context, val itemClick:OnRecyclerViewItemClickListener) : RecyclerView.Adapter<HeroAdapter.ItemViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ItemViewHolder {
val v = LayoutInflater.from(parent?.context).inflate(R.layout.adapter_layout, parent, false)
return ItemViewHolder(v)
}
var onClickListener: OnRecyclerViewItemClickListener? = null
open interface OnRecyclerViewItemClickListener {
fun click(hero: Hero)
}
override fun onBindViewHolder(holder: ItemViewHolder?, position: Int) {
var hero: Hero = item[position]
onClickListener=itemClick
holder?.mTvName?.text = hero.getName()
holder?.mTvBio?.text = hero.getBio()
holder?.mTvReal?.text = hero.getRealname()
holder?.mTvFirst?.text = hero.getFirstappearance()
holder?.mTvTeam?.text = hero.getTeam()
holder?.mTvPublisher?.text = hero.getPublisher()
holder?.mTvCreate?.text = hero.getCreatedby()
Glide.with(context)
.load(hero.getImageurl())
.into(holder?.mIvImage)
holder?.itemView?.setOnClickListener(View.OnClickListener {
this.onClickListener?.click(hero)
})
}
override fun getItemCount(): Int {
return item.size
}
class ItemViewHolder : RecyclerView.ViewHolder {
var mTvName: TextView? = null
var mTvReal: TextView? = null
var mTvCreate: TextView? = null
var mTvBio: TextView? = null
var mTvTeam: TextView? = null
var mTvPublisher: TextView? = null
var mTvFirst: TextView? = null
var mIvImage: ImageView? = null
constructor(itemView: View) : super(itemView) {
mTvName = itemView.findViewById(R.id.alTvName)
mTvReal = itemView.findViewById(R.id.alTvRealName)
mTvFirst = itemView.findViewById(R.id.alTvFirst)
mTvCreate = itemView.findViewById(R.id.alTvcreatedby)
mTvBio = itemView.findViewById(R.id.alTvBio)
mTvTeam = itemView.findViewById(R.id.alTvTeam)
mTvPublisher = itemView.findViewById(R.id.alTvpublisher)
mIvImage = itemView.findViewById(R.id.alIvUserImage)
}
}
// Given
val categories: List<CategoryDO> = TODO()
val allSubCats: Array<List<CategoryDO>> =
categories.map { it. subCategories }.toTypedArray()