Да, мой метод выдал исключение 'java.lang.NullPointerException' , да я гуглил и яндекс темы о NullPointerException.Но все же я не могу разрешить свои ошибки.Краткое объяснение: я создаю небольшие игры, в которых вы должны нажимать на раскрученные числа в порядке возрастания.Работает без ошибок.Мой адаптер тасует и правильно ставит ограниченные числа.Но я не могу справиться с щелчком, когда нажимаю кнопку.Однако, когда я отлаживаю, это дает мне некоторые ошибки, такие как 'Line 36 in LevelAdapter.kt No executable code found at line 36 in class com.example.ganz.minigamesortnumbers.LevelAdapter$MyViewHolder$bind$1 Suspend: thread'
(например, потоки также находятся в строках 15, 19, 26 и 36 в LevelAdapter.kt, в строках 31 и 47 в LevelActivity.kt) и 'Method threw 'java.lang.NullPointerException' exception. Cannot evaluate com.example.ganz.minigamesortnumbers.LevelAdapter$MyViewHolder.toString()'
.Чтобы решить последнюю проблему, мне посоветовали перейти в настройки, щелкнув правой кнопкой мыши -> Показать как -> и поставив галочку «toString».Но это было изначально помечено.Кстати, я снял галочку и снова поставил галочку.Тем не менее, это не помогло мне.Итак, где я допустил ошибку?
LevelActivity.kt
package com.example.ganz.minigamesortnumbers
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.GridLayoutManager
import android.support.v7.widget.RecyclerView
import android.widget.Toast
import kotlinx.android.synthetic.main.level.*
import java.util.*
import kotlin.collections.ArrayList
class LevelActivity : AppCompatActivity(), LevelAdapter.Listener {
private var numbersList: ArrayList<LevelModel>? = null
private var numbersAdapter: LevelAdapter? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.level)
setSupportActionBar(tbr_level)
shuffleNumbers(64.toString())
initRecycler()
btn_back.setOnClickListener { finish() }
Toast.makeText(this, "Heeeeey!!", Toast.LENGTH_SHORT).show()
}
private fun shuffleNumbers(rangeOfNumbers: String) {
val arrTest = arrayOfNulls<Int>(1000)
for (i in arrTest.indices) {
arrTest[i] = i
}
Arrays.asList(arrTest).shuffle()
numbersList = ArrayList()
for (i in 0 until rangeOfNumbers.toInt()) {
numbersList!!.add(arrTest[i]?.let { LevelModel(it.toString()) }!!)
}
numbersList!!.shuffle()
}
private fun initRecycler() {
val layoutManager: RecyclerView.LayoutManager =
GridLayoutManager(this, 8)
rv_level.layoutManager = layoutManager
numbersAdapter = LevelAdapter(numbersList!!, this)
rv_level.adapter = numbersAdapter
}
override fun onItemClick(levelModel: LevelModel) {
tv_level_title.text = "It is working!!"
Toast.makeText(
this,
"${levelModel.randomNumbers} Hee",
Toast.LENGTH_SHORT).show()
}
}
LevelAdapter.kt
package com.example.ganz.minigamesortnumbers
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.cardview_number.view.*
class LevelAdapter(
private val data: ArrayList<LevelModel>,
private val listener: Listener) :
RecyclerView.Adapter<LevelAdapter.MyViewHolder>() {
interface Listener {
fun onItemClick(levelModel: LevelModel)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.bind(data[position], listener, position)
}
override fun getItemCount(): Int = data.count()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val view: View
val inflater = LayoutInflater.from(parent.context)
view = inflater.inflate(R.layout.cardview_number, parent, false)
return MyViewHolder(view)
}
class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bind(levelModel: LevelModel, listener: Listener, position: Int) {
itemView.btn_numbers.text = levelModel.randomNumbers
itemView.setOnClickListener { listener.onItemClick(levelModel) }
}
}
}