Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何初始化数组<;列表<;模型>&燃气轮机;在科特林?_Android_Kotlin_Expandablelistview_Expandablelistadapter - Fatal编程技术网

Android 如何初始化数组<;列表<;模型>&燃气轮机;在科特林?

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

我有一个来自RESTAPI的JSON字符串,我将它绑定到
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()