My Activity looks like this...
class UtfordringerActivity : AppCompatActivity() {
private lateinit var mRecyclerView: RecyclerView
lateinit var mDatabase: DatabaseReference
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_utfordringer)
supportActionBar?.title = "Utfordringer"
recyclerview_utfordringer.layoutManager = LinearLayoutManager(this)
// Firebase Realtime db noden vi setter inn i recyclerviewet
mDatabase = FirebaseDatabase.getInstance().getReference("Utfordringer")
mRecyclerView = findViewById(R.id.recyclerview_utfordringer)
updateToRecyclerView()
}
// Funksjon som henter data og setter inn i RecyclerViewet med FirebaseRecyclerAdapter
private fun updateToRecyclerView() {
val firebaseRecyclerAdapter = object : FirebaseRecyclerAdapter<Utfordringer, CustomViewHolder>(
Utfordringer::class.java,
R.layout.utfordring_item,
CustomViewHolder::class.java,
mDatabase
) {
override fun populateViewHolder(viewHolder: CustomViewHolder?, model: Utfordringer?, position: Int) {
if (model != null) {
viewHolder?.itemView?.recyclerview_text_1?.text = model.kategori
}
if (model != null) {
viewHolder?.itemView?.recyclerview_text_2?.text = model.utfordring
}
}
}
mRecyclerView.adapter = firebaseRecyclerAdapter
}
// Viewholder
class CustomViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
}
}
And my recyclerview looks like this after getting the data from Firebase Realtime Db and works as intended. Havent implemented anything for the thrashcan button yet, since that's when the trouble starts.
I want to make that button delete the item from the recyclerview and from Firebase Realtime Db at the same time. But as I understand it putting an onClickListener on a button in a recyclerview creates errors...
The items in the recyclerview are saved in Firebase with this code from another Activity
private fun lagreUtfor() {
val kategori = utfordring_kat_text.text.toString()
val utfordring = utfordring_text.text.toString()
if (kategori.isEmpty() || utfordring.isEmpty()) {
Toast.makeText(this, "Vennligst fyll ut feltene", Toast.LENGTH_SHORT).show()
} else
if (kategori.isNotEmpty() || utfordring.isNotEmpty()) {
val map = mutableMapOf<String, Any>()
map["kategori"] = kategori
map["utfordring"] = utfordring
FirebaseDatabase.getInstance().reference
.child("/Utfordringer")
.push()
.setValue(map)
Toast.makeText(this, "Lagret", Toast.LENGTH_SHORT).show()
}
}
I'm not looking for a complete solution or get anything for free without learning it. I just hope that someone can point me in the right direction or help me a little bit :)