首页 > 解决方案 > Kotlin 嵌套 Recyclerview

问题描述

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

我将我的第二个 RecyclerView 与自定义滑动 Button 对象一起应用,这里有趣的 handleSwipeClick设置为处理该操作。

我的问题是:我怎样才能使这个函数(handleSwipeClick)专门处理每一行?Like 删除此行项目

适配器 #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()
    }

标签: kotlinandroid-recyclerview

解决方案


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

            // First init a new adapter
            dosesAdapter = ClientDoseListAdapter(item.doses.toMutableList())


            // 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 confirmDoseTaken(id: Int) {
                                    // Click action
                                    // TODO call to change LAST TAKEN and NEW INTAKE
                                    Companion.errorToast(
                                        context,
                                        "Medicijn ingenomen. $id"
                                    )

                                    // i can call removeItem method in adapter
                                    dosesAdapter.removeItem()
                                }
                            })
                    )
                }

            }

            // set recyclerView adapter
            adapter = dosesAdapter
            setRecycledViewPool(viewPool)
        }
    }

推荐阅读