我正在尝试使用notifyDataSetChanged()更新recycleview的项目.
这是我在recycleview适配器中的onBindViewHolder()方法.
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
//checkbox view listener
viewHolder.getCheckbox().setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//update list items
notifyDataSetChanged();
}
});
}
Run Code Online (Sandbox Code Playgroud)
我选中一个复选框后,我想要做的是更新列表项.我得到了一个非法的例外:"Cannot call this method while RecyclerView is computing a layout or scrolling"
java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
at android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:1462)
at android.support.v7.widget.RecyclerView$RecyclerViewDataObserver.onChanged(RecyclerView.java:2982)
at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyChanged(RecyclerView.java:7493)
at android.support.v7.widget.RecyclerView$Adapter.notifyDataSetChanged(RecyclerView.java:4338)
at com.app.myapp.screens.RecycleAdapter.onRowSelect(RecycleAdapter.java:111)
Run Code Online (Sandbox Code Playgroud)
我也使用了notifyItemChanged(),同样的例外.任何秘密的更新方式,以通知适配器的东西发生了变化?
刚刚更新到最新版本的Android Studio,我在AndroidManifest文件中收到此错误
清单合并失败:AndroidManifest.xml中的属性应用程序@ icon value =(@ drawable/project_launcher_icon):48:9也出现在com.github.anupcowkur:reservoir:1.1.1:6:45 value =(@ drawable/ic_launcher )建议:在AndroidManifest.xml:44:5中添加'tools:replace ="icon"'元素以覆盖
我尝试在我的清单中添加工具:replace ="@ drawable/ic_drawer"但是我收到此错误:
Error:(44, 5) tools:replace specified at line:44 for attribute tools:drawable/ic_drawer, but no new value specified
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在使用recycleview来显示列表.我想知道我们如何展示不同类型的观点?如同,不同的ViewHolders int在同一个适配器中
在简单的listview中我们使用了getItemViewType(),在recycleview中有什么不同之处?