kotlin - 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()
}
解决方案
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)
}
}
推荐阅读
- xml - 从odoo中的日期计算Odoo Days?
- android - Flutter Android TV 应用水平 ListView 点击项目问题
- azure-web-app-service - 手动将 azureml docker 映像部署到应用服务
- javascript - AWS Lambda 通过 1 个 Lambda 调用调用 3 个异步函数
- r - 闪亮的初学者 - ggplot geom_tile 的问题
- qt5 - QT WebEngineView网页调试
- javascript - 来自 JS 的表单动作重定向(reCaptcha)
- java - org.apache.commons.codec.digest.Crypt 导致 Invalid salt value 异常
- jenkins - Could I reuse scm for pipelineJobs created from a jenkins pipeline?
- python - Combining Sympy with scipy.optimize.least_squares