时间: 2017-10-12 20:48 栏目: Android 浏览: 8255 赞: 2 踩: 0 字体: 大 中 小
以下为本篇文章全部内容:
最近接手以前同事留下来的Android,一上来就遇到了不少坑,我本着填坑的心情来接手,看了代码简直可以用崩溃来形容,没有使用bean,共用写得也不像可以共用的东西。其中还有一个是Fragment更换三个,里面使用到了LRecyclerView,那好吧,我们直接进入主题。
上图采用了一个ViewPage和Fragment切换三个不同的内容,在布局文件控件代码,下面代码可以看到使用了LRecyclerView控件
<com.github.jdsjlzx.recyclerview.LRecyclerView android:id="@+id/lrecycler_View" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" />
通过获取到LRecyclerView控件然后设置Adapter的时候竟然爆出了下面的错误
java.lang.IllegalStateException: Observer com.github.jdsjlzx.recyclerview.LRecyclerView$DataObserver@97905af was not registered. at android.database.Observable.unregisterObserver(Observable.java:69) at android.support.v7.widget.RecyclerView$Adapter.unregisterAdapterDataObserver(RecyclerView.java:6537) at com.github.jdsjlzx.recyclerview.LRecyclerView.setAdapter(LRecyclerView.java:139) at zs.yeecolor.com.activity.collection.Collection_worker$2.handleMessage(Collection_worker.java:180) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6374) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
主要是was not registered.这里,根本看不出来是什么意思没有注册,直到跟到
重要错误是unregisterAdapterDataObserver引起的,其实这个错误在别的适配器大家可能也会看到。主要的解决办法呢是可以先判断这个控件的适配器是否为空,如果为空就设置 适配器否则就不重复设置了。这里我得到的控件是lrecyclerView,针对LRecyclerView设置适配器的时候可以判断
if (lrecyclerView.getAdapter()==null) { LRecyclerViewAdapter mLRecyclerViewAdapter = new LRecyclerViewAdapter(adapter); lrecyclerView.setAdapter(mLRecyclerViewAdapter); }
这样就解决了问题了
总赞数量:18274
总踩数量:128087
文章数量:29