以数组对象形式显示适配器的列表

时间:2018-10-13 16:07:43

标签: java android listview kotlin android-adapter

我需要显示适配器的列表。我已经通过调用api获得了数据,但是无法在界面中显示。

这是数据模型表:

 venv/bin/activate:41: parse error near `deactivate'

这是包含Table的ArrayList的数据模型表:

data class Table(val id : String, val nama: String, val tersedia: Boolean)

这是mu适配器:

data class Tables (val daftarMeja : ArrayList<Table>)

}

这很有趣:

class MejaAdapter (private val tableList: ArrayList<Table>, private val clickListener: (Table) -> Unit) : RecyclerView.Adapter<RecyclerView.ViewHolder>(){

private lateinit var tables: Tables
override fun getItemCount(): Int {
    return tableList.size
}

fun updateData(dataBaru: ArrayList<Table>) {
    tableList.clear()
    tableList.addAll(dataBaru)
    Log.i("tableListAdapter","balbalbla" + tableList.toString())
    notifyDataSetChanged()
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    val layoutInflater = LayoutInflater.from(parent.context)
    val cellForRow = layoutInflater.inflate(R.layout.item_meja,parent,false)
    return PartViewHolder(cellForRow)
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    (holder as PartViewHolder).bind(tableList[position], clickListener)
}

class PartViewHolder (itemView: View): RecyclerView.ViewHolder(itemView){
    fun bind(table: Table, clicklistener: (Table) -> Unit){
        itemView.tv_table_name.text = table.nama
        if(table.tersedia){
            itemView.container_table.setBackgroundResource(R.color.colorTableAvailable)
            itemView.tv_table_name.setTextColor(Color.BLACK)
        }
        else {
            itemView.container_table.setBackgroundResource(R.drawable.gradient)
            itemView.tv_table_name.setTextColor(Color.WHITE)
        }
        itemView.setOnClickListener {clicklistener(table)}
    }
}

我认为问题出在适配器上,但我不知道如何解决。 请帮我修复它。

1 个答案:

答案 0 :(得分:0)

我们认为这是一个命名问题,您可以使用此行代码命名您的View Holder

class MejaAdapter (private val tableList: ArrayList<Table>, private val clickListener: (Table) -> Unit) : RecyclerView.Adapter<RecyclerView.ViewHolder>(){

在哪里叫ViewHolder
然后您开始使用PartViewHolder
因此,更改代码以使用一致的名称PartViewHolder对我们来说是很好的
这是我们的适配器查看使用的命名约定

class ViewAdapter(private val parents:List<ModelParent>):RecyclerView.Adapter<ViewAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val view = LayoutInflater.from(parent.context).inflate(R.layout.the_view,parent,false)
    return ViewHolder(view)
}

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

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val parent = parents[position]
    holder.textView.text = parent.dept
    holder.recyclerView.apply {
        layoutManager = LinearLayoutManager(holder.recyclerView.context, LinearLayout.VERTICAL, false)
        adapter = ViewChildAdapter(parent.children)
    }
}

inner class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView){
    val recyclerView : RecyclerView = itemView.rv_child
    val textView: TextView = itemView.textView
}

}