Как исправить Обязательный Итебель, но нашел Список в Котлине
Здравствуйте, я учусь создавать приложения с kotlin, но у меня есть стек с этой ошибкой: "Требуется повторяемый, найденный список", как я могу решить эту проблему? пожалуйста, смотрите мой код ниже спасибо
class MainActivity : AppCompatActivity(),ProductView {
private lateinit var productAdapter: ProductAdapter
private var productList: MutableList<ProductData> = mutableListOf()
private lateinit var dataPresenter : DataPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initRecycler();
getProduct()
}
private fun getProduct() {
dataPresenter = DataPresenter(applicationContext,this)
dataPresenter.getProduct()
}
private fun initRecycler() {
productAdapter = ProductAdapter(this,productList)
rvMain.layoutManager = LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)
rvMain.adapter = productAdapter
}
override fun showLoading() {
pgMain.visibility = View.VISIBLE
}
override fun hideLoading() {
pgMain.visibility = View.GONE
}
override fun showProduct(products: List<ProductData>?) {
if (products?.size != 0){
this.productList.clear()
this.productList.addAll(products) // <= Required Iterable<ProductData>, Found List<ProductData>
productAdapter.notifyDataSetChanged()
}
}
}
1 ответ
Я подозреваю, что сообщение об ошибке на самом деле:
Required Iterable<ProductData>, Found List<ProductData>?
Знак вопроса в конце не просто пунктуация. Это обнуляемый индикатор в Котлине. List<ProductData>
не может быть null
, но List<ProductData>?
Можно. И я верю, что addAll()
требует неnull
значение.
В идеале вы должны изменить ProductView
так что подпись для showProduct()
является fun showProduct(products: List<ProductData>)
,
В качестве альтернативы, вы можете переписать showProduct()
быть:
override fun showProduct(products: List<ProductData>?) {
if (products?.size != 0){
this.productList.clear()
products?.let { this.productList.addAll(it) }
productAdapter.notifyDataSetChanged()
}
}