Wie initialize Array<Liste<Modell>> in Kotlin?

Habe ich eine JSON-Zeichenfolge, die aus rest-API und bin-Bindung, die in List<CategoryDO> Objekt. Ich habe alle Kategorie/sub-Kategorie-Daten in dieser Liste Objekt List<CategoryDO> aber ich weiß nicht, wie separate sub-Kategorien der Daten in Array<List<CategoryDO>> – format.

Wie kann ich sub-Kategorie-Liste in Array<List<CategoryDO>> Objekt? Wie kann ich das deklarieren und initialisieren von Array<List<CategoryDO>> in Kotlin?

Alle Kategorien sollten in List<CategoryDO> – format und alle sub-Kategorien in Array<List<CategoryDO>> format.

Beispiel:

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>>

CategoryDO Daten Klasse:

data class CategoryDO(  @SerializedName("Id")
                    @Expose
                    var id: Long? = null,
                    @SerializedName("Name")
                    @Expose
                    var name: String? = null,
                    @SerializedName("SubCategories")
                    @Expose
                    var subCategories: List<CategoryDO>? = null)

Eigentlich muss ich mich übergeben diese separate Kategorie/Sub-Kategorie, die Dinge zu CategoryAdapter Klasse.

CategoryAdapter Klasse Probe:

class CategoryAdapter : BaseExpandableListAdapter {
private var groupItem: List<CategoryDO>
private var contentItem: Array<List<CategoryDO>>
private var context: Context
private var imageOnClickListener: View.OnClickListener

constructor(context: Context, groupItem: List<CategoryDO>, contentItem: Array<List<CategoryDO>>, imageOnClickListener: View.OnClickListener) {
        this.groupItem = groupItem
        this.contentItem = contentItem
        this.context = context
        this.imageOnClickListener = imageOnClickListener
    }
  .
  .
  .
}
  • bitte, produzieren json-string Beispiel auf den ersten
InformationsquelleAutor Keval Gangani | 2018-05-11



2 Replies
  1. 1

    Wenn Sie brauchen, um zu konvertieren eine List<CategoryDO> zu einem Array<List<CategoryDO>> wo die innere Liste ist die Unterkategorie Liste von jedem CategoryDO können Sie die Karte über die original-Liste, und konvertieren Sie die Ergebnisse in ein array…

    //Given
    val categories: List<CategoryDO> = TODO()
    
    val allSubCats: Array<List<CategoryDO>> = 
        categories.map { it. subCategories }.toTypedArray()
    • Vielen Dank, Todd. Funktioniert Super.
  2. 0

    Versuche ich json-Daten in das recycler-Ansicht-adapter und es funktioniert, kann man versuchen, wenn dein problem gelöst..

    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)
        }
    }

    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.