I'm trying to implement a click listener for a single recycler view item and run method from my activity with clicked data (single borrower).
How to deal with it? I'm new in kotlin, so step-by-step instruction will be very helpful :)
Thanks!
MainActivity:
val db by lazy { Database.getInstance(applicationContext).database }
fun startDebtActivity() {
val intent = Intent(this, AddDebtActivity::class.java)
startActivity(intent)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
addDebtBtn.setOnClickListener {
startDebtActivity()
}
thread {
var borrowers = db.borrowers()
.getAll()
runOnUiThread {
val debtsSum = borrowers.sumByDouble { it.debt }
// update sum of debts
summary.text = debtsSum?.toBigDecimal().setScale(2, 2).toString()
// update item list
recycler.apply {
layoutManager = LinearLayoutManager(this@MainActivity)
adapter = BorrowersListAdapter(borrowers)
}
}
}
}
Adapter:
class BorrowersListVh(view: View): RecyclerView.ViewHolder(view) {
fun refreshData(borrower: Borrower) {
itemView.borrowersListName.text = borrower.name
itemView.borrowersLisDebt.text = borrower.debt.toString()
itemView.setOnClickListener {
Log.e("info", "Clicked")
}
}
public interface BorrowerClickCallbacks {
fun onItemClick(position: Int)
}
}
class BorrowersListAdapter(private val dane: List<Borrower>) : RecyclerView.Adapter<BorrowersListVh>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BorrowersListVh {
return BorrowersListVh (
LayoutInflater.from(parent.context).inflate(R.layout.borrowers_list_item, parent,false)
)
}
override fun getItemCount(): Int = dane.size
override fun onBindViewHolder(holder: BorrowersListVh, position: Int) {
val borrower: Borrower = dane[position]
holder.refreshData(borrower)
// add notify
}
}