使用BaseMultiItemQuickAdapter遇到的crash:Resources$NotFoundException: Resource ID #0xfffffe6c

信息如下:

    android.content.res.Resources$NotFoundException: Resource ID #0xfffffe6c
        at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:201)
        at android.content.res.MiuiResourcesImpl.getValue(MiuiResourcesImpl.java:94)
        at android.content.res.Resources.loadXmlResourceParser(Resources.java:2130)
        at android.content.res.Resources.getLayout(Resources.java:1133)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:428)
        at com.chad.library.adapter.base.BaseQuickAdapter.getItemView(BaseQuickAdapter.java:1516)
        at com.chad.library.adapter.base.BaseQuickAdapter.createBaseViewHolder(BaseQuickAdapter.java:1020)
        at com.chad.library.adapter.base.BaseMultiItemQuickAdapter.onCreateDefViewHolder(BaseMultiItemQuickAdapter.java:49)
        at com.chad.library.adapter.base.BaseQuickAdapter.onCreateViewHolder(BaseQuickAdapter.java:772)
        at com.chad.library.adapter.base.BaseQuickAdapter.onCreateViewHolder(BaseQuickAdapter.java:66)
        at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6493)
        at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5680)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559)
        at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229)
        at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556)
        at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516)
        at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608)
        at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693)
        at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3410)
        at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3962)
        at android.view.View.layout(View.java:17666)
        at android.view.ViewGroup.layout(ViewGroup.java:5577)
        at com.scwang.smartrefresh.layout.SmartRefreshLayout.onLayout(SmartRefreshLayout.java:684)

从这里开始看源码:at com.chad.library.adapter.base.BaseQuickAdapter.getItemView(BaseQuickAdapter.java:1516)
 

其中,layouts是你注册的 所有的type对应的布局id。

跟踪分析结论如下:

1、dataList中的数据实体类,必须实现接口MultiItemEntity的getItemType()方法来提供Type

2、在Adapter中必须注册的对应的Type,只要data中有的Type都要注册。

否则就会出现找不到对应layoutId的异常。


我的Adapter中注册了两个Type。传的数据dataList中也包含这两个类型。

然后两个实体类提供的Type,就ok了。如下~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值