Задать вопрос
@uvins_s

Как решить проблему java.lang.NullPointerException в Kotlin\Android?

Есть список Recycle View, он выводит пользователей из бд. Есть функция, которая позволяет изменить описание профиля определённого пользователя. При изменении описания, приложение вылетает с ошибкой
java.lang.NullPointerException
После повторного запуска описание успешно изменено.

Код изменения описания:
binding.button2.setOnClickListener {
            auth.currentUser?.let { it1 -> db.child(it1.uid).child("description").setValue(binding.editTextText2.text.toString()) }
}


Адаптер Recycle View:
class ItemsAdapter(private var items: ArrayList<Item>, private val context: Context) : RecyclerView.Adapter<ItemsAdapter.ViewHolder>() {

    class ViewHolder(val binding: UserItemBinding) : RecyclerView.ViewHolder(binding.root) {

    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        return ViewHolder((UserItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)))
    }

    override fun getItemCount(): Int = items.size

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = items[position]
        holder.apply {
            binding.apply {
                cardName.text = item.login
                cardDescription.text = item.description
            }
        }
    }
}


Код самого recycle view:
class HomeFragment : Fragment() {
        usersList = arrayListOf()

        fetchData()

        // Инициализация RecyclerView
        binding.rvContacts.apply {
            setHasFixedSize(true)

            layoutManager = LinearLayoutManager(context)
        }
        // ...
        private fun fetchData() {
        firebaseRef.addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                usersList.clear()

                if (snapshot.exists()) {
                    for (userSnap in snapshot.children) {
                        val users = userSnap.getValue(Item::class.java)

                        usersList.add(users!!)
                    }
                }

                val rvAdapter = context?.let { ItemsAdapter(usersList, it) }

                binding.rvContacts.adapter = rvAdapter
            }

            override fun onCancelled(error: DatabaseError) {
                Toast.makeText(context, "Ошибка: ${error.message}", Toast.LENGTH_SHORT).show()
            }
        })
    }
}
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Средний 7 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы