我在我的Android项目中使用RecyckerView,它的性能真的很糟糕。从这里的答案中,我尝试将adapter.setHasStableIds(true);
添加到我的代码中。跑步时,我收到一个错误:
java.lang.IllegalStateException: Cannot change whether this adapter has stable IDs while the adapter has registered observers.
我的完整日志如下;
09-22 22:22:23.634 1808-1808/com.revosleap.movielist E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.revosleap.movielist, PID: 1808
java.lang.IllegalStateException: Cannot change whether this adapter has stable IDs while the adapter has registered observers.
at android.support.v7.widget.RecyclerView$Adapter.setHasStableIds(RecyclerView.java:6749)
at com.revosleap.movielist.Utils.UrlUtils.GenreFetcher.getGenre(GenreFetcher.java:48)
at com.revosleap.movielist.MainActivity$2.onItemSelected(MainActivity.java:221)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:1124)
at android.widget.AdapterView.access$200(AdapterView.java:54)
at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:1089)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
请问我怎么修理这个?
不能使用< code > adapter . sethasstableids(true);带有observable ArrayList/observable fields
作为回收商查看源代码:
/**
* Indicates whether each item in the data set can be represented with a unique identifier
* of type {@link java.lang.Long}.
*
* @param hasStableIds Whether items in data set have unique identifiers or not.
* @see #hasStableIds()
* @see #getItemId(int)
*/
public void setHasStableIds(boolean hasStableIds) {
if (hasObservers()) {
throw new IllegalStateException("Cannot change whether this adapter has "
+ "stable IDs while the adapter has registered observers.");
}
mHasStableIds = hasStableIds;
} .
所以你可以解决它。
if (!adapter.hasObservers()) {
adapter.setHasStableIds(true)
}
在将适配器分配给回收站视图之前,必须将适配器的 hasStableIds 设置为 true。
YourAdapter adapter = new YourAdapter();
adapter.setHasStableIds(true);
myRecyclerView.setAdapter(adapter);
谢谢你的任何线索!
将 HTTP 参数转换成一个函数参数的过程是一个典型适配过程,执行这个过程的对象被称为适配器了。 Nutz.Mvc 提供了 org.nutz.mvc.HttpAdaptor 接口,隔离了这种行为。 在每一个入口函数上,你都可以通过注解 @AdaptBy 来声明如何适配 HTTP 参数。当然,你 没必要在每一个入口函数上都声明,在子模块类上声明,或者在整个应用的主模块上声明均可。 如何使用适配器?
在Casbin中,策略存储作为adapter(Casbin的中间件) 实现。 Casbin用户可以使用adapter从存储中加载策略规则 (aka LoadPolicy()) 或者将策略规则保存到其中 (aka SavePolicy())。 为了保持代码轻量级,我们没有把adapter代码放在主库中。 目前支持的适配器列表 Casbin的适配器完整列表如下。 我们欢迎任何第三方对adapter进行
适配器 In some cases you might not want to use socket.io. It's not a problem. Nest allows you to use any other websockets library, you only have to create an adapter. Let's imagine that you want to use w
错误:java.lang.IllegalArgumentException:无法为apiInterface.postimage方法的rx.Observable创建调用适配器 UPD: 我将接口和其他更改为: 在那之后,我有一个错误(这是不是意味着,我是对的??): 错误:Android.os.NetworkOnMainThreadException UPD3: *E/AndroidRuntime:
我有下面的代码从我的房间数据库的LiveData中获取信息- 出于某种原因,在观察者内部调用submitList不会将项添加到列表中。 我试图在观察者之前添加虚假的测试项目,它工作了,我在调用submitList方法之前记录了模型信息,它打印了有效信息。 我还试图用一个主分发器的协程来结束对submitList的调用,认为这与回调不在主线程中或类似的东西有关,但仍然没有结果。 我错过了什么?一切看