Kotlin嵌套Recyclerview

问题描述 投票:0回答:1

如果有人可以帮助我,我真的很合适。

我将第二个RecyclerView与一个自定义的滑动Button对象一起应用,此处fun handleSwipeClick已设置为处理该动作。

我的问题是:如何使此函数(handleSwipeClick)专门处理每一行?喜欢删除此行项目

适配器#1

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = baxters[position]
        holder.listItem_time.text = item.intakeTime

        holder.itemView.dose_recycler_view.apply {
            dose_recycler_view.setHasFixedSize(true)
            layoutManager = LinearLayoutManager(context)
            dose_recycler_view.layoutManager = layoutManager

            //Swipe action
            val swipe = object: SwipeHelper(context,dose_recycler_view, 400){
                override fun instaniateSwipeButton(
                    viewHolder: RecyclerView.ViewHolder,
                    buffer: MutableList<SwipeButton>
                ) {
                    // Adding Buttons
                    buffer.add(
                        SwipeButton(context,
                            "",
                            30,
                            R.drawable.ic_check_circle,
                            Color.parseColor("#66ff66"),
                            object : ButtonClickListener {
                                override fun handleSwipeClick(id: Int) {
                                    // Click action
                                    // TODO call to change LAST TAKEN and NEW INTAKE
                                    Companion.errorToast(
                                        context,
                                        "Medicijn ingenomen. $id"
                                    )
                                }
                            })
                    )
                }

            }

            adapter = ClientDoseListAdapter(item.doses.toMutableList())
            setRecycledViewPool(viewPool)
        }
    }

适配器#2

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = doses[position]

/// DELETE THIS ROW
        holder.med_name.text = item.medicineItem.name
        holder.dose_amount.text = item.amount.toString()
    }
kotlin android-recyclerview recycler-adapter
1个回答
0
投票

首先,在ClientDoseListAdapter适配器中创建一个delete方法,然后在单击操作中调用该方法,例如,

override fun handleSwipeClick(id: Int) { 
    // Click action 
    adapter.delete(adapter.getItem(viewHolder.adapterPosition)) 
}
© www.soinside.com 2019 - 2024. All rights reserved.