【发布时间】:2020-05-14 16:05:33
【问题描述】:
我正在尝试为单个回收器视图项实现单击侦听器,并从我的活动中使用单击的数据运行方法(单个借用者)。
如何处理?我是 kotlin 的新手,所以一步一步的指导会很有帮助:)
谢谢!
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)
}
}
}
}
适配器:
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
}
}
【问题讨论】:
标签: android kotlin android-recyclerview