BaseRecyclerViewAdapterHelper icon indicating copy to clipboard operation
BaseRecyclerViewAdapterHelper copied to clipboard

3.0.2版本,RV弄无限循环滚动,每次都报空指针,getItem、getDefItemCount方法都重写了

Open CordyHo opened this issue 4 years ago • 13 comments

代码:

override fun convert(holder: BaseDataBindingHolder<RvItemDataBinding>, item: JsonBean.DataBean) {
    holder.dataBinding?.data = item
}

override fun getDefItemCount(): Int {
    return Int.MAX_VALUE
}

override fun getItem(position: Int): JsonBean.DataBean {
    return if (position >= data.size)
        data[position % data.size]
    else
        data[position]
}

错误信息: kotlin.KotlinNullPointerException at com.chad.library.adapter.base.BaseQuickAdapter.onCreateViewHolder(BaseQuickAdapter.kt:231) at com.chad.library.adapter.base.BaseQuickAdapter.onCreateViewHolder(BaseQuickAdapter.kt:75) at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)

这是我用原生Adaoter写法,可以正常运行:

`

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyVH {
    val binding = DataBindingUtil.inflate<RvItemDataBinding>(LayoutInflater.from(context), R.layout.rv_item_data, parent, false)
    return MyVH(binding.root, binding)
}

override fun getItemCount(): Int {
    return Int.MAX_VALUE
}

override fun onBindViewHolder(holder: MyVH, position: Int) {
    if (position >= data.size)
        holder.binding.data = data[position % data.size]
    else
        holder.binding.data = data[position]
}

class MyVH(itemView: View, val binding: RvItemDataBinding) : RecyclerView.ViewHolder(itemView)

`

CordyHo avatar May 12 '20 02:05 CordyHo

能给个demo么?

limuyang2 avatar May 22 '20 16:05 limuyang2

能给个demo么?

链接: https://pan.baidu.com/s/1gpilUzlHbTI4aDRY-mindw 提取码: 4gte 有2个Adapter,一个原生写的,一个用BRVAH,你看看

CordyHo avatar May 27 '20 01:05 CordyHo

我也是,getDefItemCount+1,就报空指针

xichunjie avatar May 27 '20 09:05 xichunjie

你好,解决了吗

zhanhon avatar Jun 22 '20 08:06 zhanhon

你好,解决了吗?我也遇到同样的问题了

soul7630 avatar Jun 28 '20 09:06 soul7630

你好,解决了吗

没,最新版还是空指针

CordyHo avatar Jun 29 '20 01:06 CordyHo

你好,解决了吗?我也遇到同样的问题了

没,最新版还是空指针

CordyHo avatar Jun 29 '20 01:06 CordyHo

解决了吗😂😂😂

LxzBUG avatar Jul 10 '20 14:07 LxzBUG

需要重写getItemViewType方法呀

private val adapter by lazy { object : BaseQuickAdapter<Int, BaseViewHolder>(R.layout.item_layout) { override fun convert(helper: BaseViewHolder?, item: Int?) { helper?.itemView?.apply { textView.text = "hello world$item" } }

        override fun getItemCount(): Int {
            return Int.MAX_VALUE
        }

        override fun getItem(position: Int): Int? {
            return data[position % data.size]
        }

        override fun getItemViewType(position: Int): Int {
            var count = headerLayoutCount + data.size
            if (count <= 0) {
                count = 1
            }
            return super.getItemViewType(position % count)
        }
    }
}

withyi9223 avatar Jul 22 '20 15:07 withyi9223

可以了,是什么原理啊?

CordyHo avatar Jul 28 '20 05:07 CordyHo

用的最新版,为啥我已经重写了这三个方法,还是报空指针?

android-taoge avatar Oct 26 '21 02:10 android-taoge

而且是照着楼上粘的代码。。

android-taoge avatar Oct 26 '21 02:10 android-taoge

解了吗

artillerymans avatar Feb 26 '22 09:02 artillerymans