【发布时间】:2017-08-02 04:34:23
【问题描述】:
Activity A 和 B 包含一个 RecyclerView 并保存相似类型的数据,因此它们使用 称为 AViewModel 的通用视图模型
活动 A.java
@BindingAdapter("bind:adapter")
public static void setAdapter(RecyclerView recyclerView, ArrayList<AViewModel> vm) {
AdapterA adapter = ((AdapterA) recyclerView.getAdapter());
if (adapter != null) {
adapter.clearList();
adapter.addAll(vm);
adapter.notifyDataSetChanged();
}
}
活动 B.java
@BindingAdapter("bind:adapter")
public static void setAdapter(RecyclerView recyclerView, ArrayList<AViewModel> vm) {
AdapterB adapter = ((AdapterB) recyclerView.getAdapter());
if (adapter != null) {
adapter.clearList();
adapter.addAll(vm);
adapter.notifyDataSetChanged();
}
}
现在在启动 Activity A 时,应用程序崩溃并显示
AdapterA 无法转换为 AdapterB
怀疑 setAdapter 的类似方法签名。 有什么建议可以解决问题的原因吗?
错误日志
E/AndroidRuntime: 致命异常: main 进程:com. .hackthon.listviewpoc,PID:308 java.lang.ClassCastException: com. .hackthon.listviewpoc.AdapterA 不能转换为 com。 .hackthon.listviewpoc.AdapterB 在 com.hackthon.listviewpoc.ActivityB.setAdapter(ActivityB.java:39) 在 com.hackthon.listviewpoc.databinding.ActivityABinding.executeBindings(ActivityABinding.java:145) 在 android.databinding.ViewDataBinding.executeBindingsInternal(ViewDataBinding.java:379) 在 android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:351) 在 android.databinding.ViewDataBinding$6.run(ViewDataBinding.java:178) 在 android.databinding.ViewDataBinding$5.onViewAttachedToWindow(ViewDataBinding.java:146) 在 android.view.View.dispatchAttachedToWindow(View.java:14531) 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2836) 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843) 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843) 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843) 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843) 在 android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1364) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 在 android.view.Choreographer.doCallbacks(Choreographer.java:670) 在 android.view.Choreographer.doFrame(Choreographer.java:606) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
【问题讨论】:
-
粘贴完整的错误日志
标签: android-recyclerview android-databinding android-binding-adapter