Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
Kotlin 如何使用getItemViewType按标题和子项插入项目_Kotlin_Retrofit - Fatal编程技术网

Kotlin 如何使用getItemViewType按标题和子项插入项目

Kotlin 如何使用getItemViewType按标题和子项插入项目,kotlin,retrofit,Kotlin,Retrofit,如何在插入之前通过排序在recyclingeview中插入arraylist。就在示例下方 [PRATO FEITO ] -> TITLE [ COM ACOMPANHAMENTO] -> SUB ITEM [ COM FEIJOADA ] -> SUB ITEM [ ] [ESPETINHO ] -> TITLE [ COM BIFÉ ] ->

如何在插入之前通过排序在recyclingeview中插入arraylist。就在示例下方

[PRATO FEITO          ] -> TITLE
[   COM ACOMPANHAMENTO] -> SUB ITEM
[   COM FEIJOADA      ] -> SUB ITEM
[                     ]
[ESPETINHO            ] -> TITLE
[   COM BIFÉ          ] -> SUB ITEM
[   COM ACOMPANHAMENTO] -> SUB ITEM
看看结果如何。它快坏了

[PRATO FEITO          ] -> TITLE
[ESPETINHO            ] -> TITLE
[   COM BIFÉ          ] -> SUB ITEM
[   COM ACOMPANHAMENTO] -> SUB ITEM 
[   COM FEIJOADA      ] -> SUB ITEM
[   COM MANDIOCA      ] -> SUB ITE
我的代码列表

class Lista_Itens_Mesa : AppCompatActivity() {

    val client by lazy {
        Api.create()
    }
    var disposable: Disposable? = null

    private lateinit var recycleview: RecyclerView
    private lateinit var viewadapter1: RecyclerView.Adapter<*>
    private lateinit var viewManager: RecyclerView.LayoutManager

    private lateinit var db: AppBancoDados

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.lista__itens__mesa_pratos)  //lista__itens__mesa_pratos
        val numbercolumns = 1
        recyclerViewItens_Mesa.layoutManager = LinearLayoutManager(this)
        recyclerViewItens_Mesa.addItemDecoration(DividerItemDecoration(this, OrientationHelper.HORIZONTAL))
        BuscarTestando()

    }

    fun BuscarTestando(){
        disposable = client.list_pratos(idmesas)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                { result ->

                    val array = ArrayList<Pr_atos>()

                    result[0].pratos.forEach {
                        array.add(Pr_atos(it?.dESCRICAOPRODUTO, null, it?.POST_TYPE))
                    }

                    result[1].complementos.forEach {
                        array.add(Pr_atos(null, it?.cOMPLEMENTODESCRICAO, it?.POST_TYPE))
                    }

                    viewadapter1 = Itens_Mesa_Adapter(array)
                    recyclerViewItens_Mesa.adapter = viewadapter1

                },
                { error ->
                    println(" Erro não esperado! " + error.printStackTrace())
                })
    }
}

}

以及pratos和complementos是如何相互绑定的?它们是作为JSON响应的
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    if(viewType == POST_TYPE_PRATOS){
        val view_pratos = LayoutInflater.from(parent.context).inflate(R.layout.itens__mesa_pratos,parent,false)
        return ViewHolderPratos(view_pratos)
    }else(viewType == POST_TYPE_COMPLEMENTOS)
        val view_complementos = LayoutInflater.from(parent.context).inflate(R.layout.itens_mesa_complemento,parent,false)
        return ViewHolderComplementos(view_complementos)
}

override fun getItemCount(): Int {
    return itens_mesa.size
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    if(getItemViewType(position) == POST_TYPE_PRATOS){
        (holder as ViewHolderPratos).bind(itens_mesa[position])
    }else{
        (holder as ViewHolderComplementos).bind(itens_mesa[position])
    }
}

override fun getItemViewType(position: Int): Int {
   return if(itens_mesa[position].post_type == 1){
        POST_TYPE_PRATOS
    }else{
        POST_TYPE_COMPLEMENTOS
    }
}

class ViewHolderPratos(itemView: View) : RecyclerView.ViewHolder(itemView){
    fun bind(itens : Pr_atos){
        itemView.TextViewPedidoName.text  = itens.produtoname
    }
}

class ViewHolderComplementos(itemView: View) : RecyclerView.ViewHolder(itemView){
    fun bind(itens: Pr_atos){
        itemView.textViewcomplemento_pedido.text = itens.complementoname
    }
}