Вы видите это сообщение об ошибке, потому что безопасный вызов ?.
в recyclerView?.adapter = greetingAdapter
вернет ноль, поэтому он не будет выполнен, потому что вы вызываете его до того, как представление завышено, что составляет inflater.inflate(R.layout.fragment_category, container, false)
, поэтому для решениячто: Создать переменную имеет значение завышенного представления, затем использовать его, чтобы получить представление и вернуть его Вот так:
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
listOfGreetings?.add(0, GreetingModel("Greeting 1", R.drawable.ic_launcher_background))
listOfGreetings?.add(1, GreetingModel("Greeting 2", R.drawable.greeting_1))
listOfGreetings?.add(2, GreetingModel("Greeting 3", R.drawable.greeting_1))
listOfGreetings?.add(3, GreetingModel("Greeting 4", R.drawable.greeting_1))
listOfGreetings?.add(4, GreetingModel("Greeting 5", R.drawable.greeting_1))
listOfGreetings?.add(5, GreetingModel("Greeting 6", R.drawable.greeting_1))
listOfGreetings?.add(6, GreetingModel("Greeting 7", R.drawable.greeting_1))
listOfGreetings?.add(7, GreetingModel("Greeting 8", R.drawable.greeting_1))
//This varaible will holds a reference to the inflated view.
val view = inflater.inflate(R.layout.fragment_category, container, false)
//Get the recyclerView from the inflated view.
val recyclerView = view.findViewById<RecyclerView>(R.id.recyclerView)
val manager = LinearLayoutManager(activity)
//No need to the safe call ?. here because recyclerView won't be null.
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = manager
recyclerView.adapter = greetingAdapter
return view
}
Кроме того, вы чрезмерно используете оператор безопасного вызова ?.
в вашем коде.listGreetings
можно сделать намного проще, вы можете использовать apply()
для объекта, который в нашем случае listGreeting
с безопасным вызовом:
listOfGreetings?.apply {
add(0, GreetingModel("Greeting 1", R.drawable.ic_launcher_background))
add(1, GreetingModel("Greeting 2", R.drawable.greeting_1))
add(2, GreetingModel("Greeting 3", R.drawable.greeting_1))
add(3, GreetingModel("Greeting 4", R.drawable.greeting_1))
add(4, GreetingModel("Greeting 5", R.drawable.greeting_1))
add(5, GreetingModel("Greeting 6", R.drawable.greeting_1))
add(6, GreetingModel("Greeting 7", R.drawable.greeting_1))
add(7, GreetingModel("Greeting 8", R.drawable.greeting_1))
}
Это проверит, что если listGreetings
не равноNULL будет выполнять код в блоке apply
:
apply{
//block
}