java.lang.IllegalStateException:cardProductItem不能为null

时间:2019-07-05 10:28:04

标签: android kotlin android-cardview

我已经用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不能为空

能否请您告诉我错误在哪里,我该如何纠正

1 个答案:

答案 0 :(得分:0)

根据可用的代码,您正在cardProductItem之外设置setOnClickListener的值。该错误表明单击cardProductItem时无法设置listProduct。在将UI呈现给用户之前,请确保将cardProductItem设置为一个值。

要获得更深入的答案,我需要查看使用cardProductItem的其他地方。