我已经用Kotlin创建了一个android应用程序。这个应用程序包含一个界面,其中包含一个recyclerview以获取所有产品列表。 为了填充此产品列表,我创建了一个适配器,该适配器是cardview:Imageview和两个textview。 在该界面中,我添加了两个按钮,一个按钮是单击带有列表的所有产品显示屏,另一个按钮是带有网格布局的显示器。网格布局的默认值。 我想更改卡片视图的宽度和高度,以在列表中显示所有产品。 以下代码是适配器项目:
<ImageView
android:id="@+id/gridProducts"
android:layout_width="@dimen/spacing_mlarge"
android:layout_height="@dimen/spacing_mlarge"
android:scaleType="fitXY"
android:layout_toLeftOf="@+id/productNumber"
android:layout_margin="8dp"
android:src="@drawable/ic_divided_squares"/>
<ImageView
android:id="@+id/listProducts"
android:layout_width="@dimen/spacing_mlarge"
android:layout_height="@dimen/spacing_mlarge"
android:scaleType="fitXY"
android:layout_margin="8dp"
android:src="@drawable/ic_rounded_black_square_shape"/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewProductByCategory"
android:layout_below="@+id/recyclerViewCategories"
android:layout_marginTop="66dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/spacing_middle"
android:layout_marginEnd="@dimen/spacing_middle"
android:orientation="horizontal"/>
以下代码是包含一个recyclerview的xml文件的摘录:
gridProducts.setOnClickListener {
recyclerViewProductByCategory.layoutManager =
StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
recyclerViewProductByCategory.adapter = products?.let { it -> ProductAdapter(it) }
gridProducts.visibility = View.INVISIBLE
listProducts.visibility = View.VISIBLE
}
listProducts.setOnClickListener {
recyclerViewProductByCategory.layoutManager =
LinearLayoutManager(this@CategoryByProduct, RecyclerView.VERTICAL, false)
recyclerViewProductByCategory.adapter = products?.let { it -> ProductAdapter(it) }
val layoutParams = LayoutParams(
LayoutParams.MATCH_PARENT, // CardView width
LayoutParams.WRAP_CONTENT // CardView height
)
cardProductItem.layoutParams = layoutParams
listProducts.visibility = View.INVISIBLE
gridProducts.visibility = View.VISIBLE
}
以下代码将onclick acion包含到两个按钮(Imageview)中:
{{1}}
运行我的应用程序后,异常如下:
java.lang.IllegalStateException:cardProductItem不能为空
能否请您告诉我错误在哪里,我该如何纠正
答案 0 :(得分:0)
根据可用的代码,您正在cardProductItem
之外设置setOnClickListener
的值。该错误表明单击cardProductItem
时无法设置listProduct
。在将UI呈现给用户之前,请确保将cardProductItem
设置为一个值。
要获得更深入的答案,我需要查看使用cardProductItem
的其他地方。