我的适配器部分有一个进度条,我想从活动部分更改它。
适配器
interface PreparedOnItemDetailClickListener {
fun onClick(
orderDetail: PreparedOrdersResponse,
view: View,
preparingDetailProgressBar: ProgressBar
)
}
适配器-ViewHolder
detailAreaLinearPreparing.setOnClickListener {
preparedOnItemDetailClickListener.onClick(
data,
it,
binding.preparingDetailProgressBar
)
preparingDetailProgressBar.visible()
}
片段
我可以成功捕获片段部分的监听事件,但无法隐藏进度条。 顺便说一句,我可以隐藏视图。
override fun onClick(
orderDetail: PreparedOrdersResponse,
view: View,
preparingDetailProgressBar: ProgressBar
) {
// TODO: PREPARED DETAIL ON ITEM CLICK
view.isClickable = false
Log.e("ORDERDETAIL", "onClick: " + orderDetail.id)
detailOrderDialog(orderDetail, view,preparingDetailProgressBar)
}
详细订单对话框
我想将其隐藏在对话框部分,因为我希望在对话框打开时隐藏进度条。
private fun detailOrderDialog(
orderDetail: PreparedOrdersResponse,
view: View,
preparingDetailProgressBar: ProgressBar
) {
val dialog = AlertDialog.Builder(requireContext())
val bindingDialog =
DialogDetailBinding.inflate(
LayoutInflater.from(binding.root.context),
binding.root,
false
)
dialog.setView(bindingDialog.root)
val alertDialog = dialog.create()
bindingDialog.apply {
preparingDetailProgressBar.gone()
cancelImageView.setOnClickListener {
alertDialog.dismiss()
view.isClickable = true
}
menuImageView.setOnClickListener {
view.isClickable = true
}
alertDialog.setCancelable(true)
alertDialog.show()
}
我试过了,但没用
您可以移动
position
信息,而不是将视图元素移动到零件。
您可以使用以下方法。(使用
Fragment
或 Activity
)
fun hideProgressBar(position: Int) {
val holder = yourRecylerView.findViewHolderForAdapterPosition(position) as YourViewHolder?
holder?.preparingDetailProgressBar?.visibility = View.GONE
// You can perform all the operations in this section. Like showing Alert Dialog.
}
这里重要的细节是使用
findViewHolderForAdapterPosition
。很实用。