RecyclerView 局部频繁刷新影响点击事件处理

背景:

        某个item上有个textview用来显示时间,时间的值从外部传入,每100毫秒就刷新一次。

处理:

        使用notifyItemChanged(int position,@Nullable Object palload)方法,进行局部刷新处理

        /**
         * Notify any registered observers that the item at <code>position</code> has changed with
         * an optional payload object.
         *
         * <p>This is an item change event, not a structural change event. It indicates that any
         * reflection of the data at <code>position</code> is out of date and should be updated.
         * The item at <code>position</code> retains the same identity.
         * </p>
         *
         * <p>
         * Client can optionally pass a payload for partial change. These payloads will be merged
         * and may be passed to adapter's {@link #onBindViewHolder(ViewHolder, int, List)} if the
         * item is already represented by a ViewHolder and it will be rebound to the same
         * ViewHolder. A notifyItemRangeChanged() with null payload will clear all existing
         * payloads on that item and prevent future payload until
         * {@link #onBindViewHolder(ViewHolder, int, List)} is called. Adapter should not assume
         * that the payload will always be passed to onBindViewHolder(), e.g. when the view is not
         * attached, the payload will be simply dropped.
         *
         * @param position Position of the item that has changed
         * @param payload  Optional parameter, use null to identify a "full" update
         * @see #notifyItemRangeChanged(int, int)
         */
        public final void notifyItemChanged(int position, @Nullable Object payload) {
            mObservable.notifyItemRangeChanged(position, 1, payload);
        }

代码:

class AdapterPayAmount(
    layoutResId: Int = R.layout.adapter_pay_amount,
    data: MutableList<BeanGoodsInfo>? = null
) :
    BaseQuickAdapter<BeanGoodsInfo, BaseViewHolder>(layoutResId, data) {

    var selTime by Delegates.observable("") { _, old, new ->
        if (old != new && itemCount > 1) {
            notifyItemChanged(itemCount - 1,1)
        }
    }

    override fun convert(holder: BaseViewHolder, item: BeanGoodsInfo, payloads: List<Any>) {
        super.convert(holder, item, payloads)
        val mTvTime = holder.getView<TextView>(R.id.tv_time)
        mTvTime.text = selTime
    }
    override fun convert(holder: BaseViewHolder, item: BeanGoodsInfo) {
        
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值