Есть список 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()
}
})
}
}