recyclerview嵌套recyclerview内部recyclerview输入数据修改外部recyclerview展示

最近工作上遇到一些问题,recyclerview中嵌套一个recyclerview,这内部的recyclerview的item布局中有EditText,需要输入数据,最关键的是在内部输入后,需要在外部这个recyclerview上进行展示,我一开始想的是不行我就修改后刷新数据源,但是在我填写的时候,他每次都会重新加载数据源,这体验就不是很好,整了我一个周末,没弄明白,今天周一,来公司问了问我们公司的大佬,人家说用监听回掉就可以,我一脸懵逼,然后人家给了我一套代码,我去。真好用,接下来直接上代码块

 var callback:((Int)->Unit)?= null

这个是在内部的recyclerview的适配器中声明的一个回掉方法

 val watcher = object : TextWatcher{
            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

            }

            override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

            }

            override fun afterTextChanged(v: Editable?) {
                if (v!= null && v.toString()!= "" ){
                    item?.boxNumber = v.toString().toInt()
                    var count=0

                    for (i in (lengthF-1) until data.size){
                        count+=data[i]?.boxNumber?:0
                    }

                  
                    callback?.invoke(count)
        
                }
            }

        }

这个是输入框的监听事件,需要咱们创建出来

if(edit.tag!=null){
            edit.removeTextChangedListener(edit.tag as TextWatcher)
        }

        edit.addTextChangedListener(watcher)
        edit.tag = watcher

这块代码是因为是在适配器中写的,可能会有多个item,需要我们手动去除监听事件,否则就可能会出现数据错乱

主要代码就这么多,具体在外部适配器中调用请看下图

salesEstimateWeekAdapter.callback ={ it->
           
}

这个it->其实是他自带的,我在这是写出来,让大家看的清楚这个,接下来就在这个callback中进行数据渲染就可以了,语言可能不太通畅,如果大家有需要的,评论留言都可以,我看到了,第一时间会给大家回答的

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值