我有一个包含 a 的 ViewHolder ViewStub
,当我想将数据绑定到我的视图中时,我首先检查viewStub
之前是否膨胀?
if (mViewStub != null) //still not inflated
然后,如果mViewStub
仍然没有充气,我尝试通过以下方式充气:
LinearLayout root = ((LinearLayout) mViewStub.inflate());
但在这里我得到例外:
java.lang.IllegalStateException:ViewStub 必须有一个非空的 ViewGroup viewParent
我检查了这个答案,发现当ViewStub的父级为null时会抛出这个异常。通过调试,我发现这是真的,并且我的父母mViewStub
为空。
xml 文件很简单,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_view"
android:layout_width="60dp"
android:layout_height="100dp"
>
<ViewStub
android:id="@+id/view_cell_stub"
android:layout="@layout/item_card"
android:layout_width="60dp"
android:layout_height="100dp"/>
</FrameLayout>
我必须提到ViewStub
对象不是在运行时创建的,我只是在 ViewHolder 类中通过 Id 找到它。
ViewStub mViewStub = itemView.findViewById(R.id.view_cell_stub);
最后,经过这个解释,我的主要问题是“为什么父级mViewStub
变为空”?