我RecyclerView用作列表来显示可以下载的歌曲.每个项目都有ProgressBar它View.当下载开始时,我使用a Handler来通知每个项目更新ProgressBar以显示歌曲下载进度.
Q1.这是一种正确的方法吗?还是有其他方法可以更恰当地做到这一点.
Q2.当我们
adapter.notifyItemChanged(position);用来更新单个项目的内容时,RecyclerView会崩溃.它是从Handler使用中调用的Runnable.但是,日志不会显示我的代码的任何痕迹.为什么?
以下是此问题的日志:
05-06 19:09:45.804: E/AndroidRuntime(32115): FATAL EXCEPTION: main
05-06 19:09:45.804: E/AndroidRuntime(32115): java.lang.IllegalArgumentException: Tmp detached view should be removed from RecyclerView before it can be recycled: ViewHolder{41b7bec0 position=6 id=-1, oldPos=-1, pLpos:-1 update changed tmpDetachedundefined adapter position no parent}
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:3861)
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView.removeAnimatingView(RecyclerView.java:779)
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView.access$5300(RecyclerView.java:127)
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView$ItemAnimatorRestoreListener.onAddFinished(RecyclerView.java:8228)
05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView$ItemAnimator.dispatchAddFinished(RecyclerView.java:8573) …Run Code Online (Sandbox Code Playgroud)