1、前言:
在软件开发过程中,突然复制按钮,有时候点击没有作用,连日志都不打印,我反复点了好多次,然后滑动列表,过一会可以点击了,然后所有的复制按钮又可以点击了,第一次刚进入的时候无效,过一会又可以了。
2、解决思路:
- 1、我在adapter中写点击事件,刚进来不能点击,过一会能点击;
- 2、我在Fragment中,子View的ID,刚进来不能点击,过一会能点击;
- 3、我重写了Adapter的列表,刚进来不能点击,过一会能点击;
- 4、接着,我把所有的子View删除,只留一个View,发现可以点击;
- 5、最后,我通过二分法查找到是Glide图片加载影响了点击事件;
原因:列表的图片加载,占用主线程,造成阻塞,这是为什么刚进来点击无效,过一会可以点击了。在有图片加载的列表,在图片url为空的情况下,不要使用Glide去加载图片了
3、修改的代码
注意:列表中的图片加载,一定要判断图片地址是否为空,不为空再去加载,否则列表的都去加载图片,会阻塞主线程的操作。
//必须这样写
var url = item.storePic ?: ""
if (TextUtils.isEmpty(url)) {
ivPic.setImageResource(R.mipmap.main_loading_pic)
} else {
GlideUtils.loadRoundedRectangleUrl(
context, url, ivPic, 8
)
}
//全部代码
class WarehouseAcceptanceAdapter :
BaseQuickAdapter<AcceptListBean, BaseDataBindingHolder<ItemWarehouseAcceptanceAdapterBinding>>(R.layout.item_warehouse_acceptance_adapter) {
override fun convert(
holder: BaseDataBindingHolder<ItemWarehouseAcceptanceAdapterBinding>,
item: AcceptListBean
) {
var position = holder.adapterPosition + 1
holder.dataBinding?.apply {
//提货回仓-拒收回仓-揽件入仓
tvNumber.text = "${position}、${item.acceptTaskTypeDesc}"
// 验收标记(0:未验收,1:已验收)
if (item.acceptState == 1) {
//已验收
tvOrderStatus.setTextColor(ContextCompat.getColor(context, R.color.color_349904))
} else {
//未验收
tvOrderStatus.setTextColor(ContextCompat.getColor(context, R.color.red))
}
tvOrderStatus.text = "${item.acceptStateDesc}"
//验收类型
when (item.acceptTaskType) {
1 -> {
//揽件入仓
tvNumber.setBackgroundResource(R.drawable.x_shap_right_20_349904)
}
2 -> {
//拒收回仓
tvNumber.setBackgroundResource(R.drawable.x_shap_right_20_34711d)
}
3 -> {
//提货回仓
tvNumber.setBackgroundResource(R.drawable.x_shap_right_20_3699ff)
}
4 -> {
//改日送
tvNumber.setBackgroundResource(R.drawable.x_shap_right_20_4b409e)
}
}
//包裹号
tvOrderNumber.text = item.caseCode ?: ""
tvBusinessOrderNumber.text = item.custOrderNo ?: ""
tvDriverNumber.text = item.driverName ?: ""
tvDriverStatus.text = item.driverMobile ?: ""
tvUserName.text = item.contact ?: ""
tvCarStatus.text = item.addressTypeDesc ?: ""
tvShopName.text = item.shopName ?: ""
tvAddress.text = item.address ?: ""
tvWarehouseTitle.text = item.fromNodeName ?: ""
tvWarehouseNumber.text = "--送货----▶ ${item.toNodeName ?: ""}"
//必须这样写
var url = item.storePic ?: ""
if (TextUtils.isEmpty(url)) {
ivPic.setImageResource(R.mipmap.main_loading_pic)
} else {
GlideUtils.loadRoundedRectangleUrl(
context, url, ivPic, 8
)
}
/**
* 点击事件
*/
tvOrderNumber.setOnClickListener {
//复制
//LogUtils.debugInfo("---开始复制---${item.caseCode}")
CommonUtils.copyOrderNumber(context,"${item.caseCode}")
}
}
}