【发布时间】:2021-01-03 09:03:55
【问题描述】:
几天前我开始使用 kotlin,但我遇到了 recyclerView 的问题。当我调用适配器的 notifyDataSetChanged 方法时,视图不会更新。 (我使用了调试器,并且我的变量“usersList”已更新,但视图未更新。这是我的适配器类:
private class RankingAdapter : RecyclerView.Adapter<RankingViewHolder>() {
var usersList : MutableList<User?>? = mutableListOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RankingViewHolder {
val v = LayoutInflater.from(parent.context)
.inflate(R.layout.ranking_item_layout, parent,false) as LinearLayout
return RankingViewHolder(v)
}
override fun getItemCount(): Int {
return usersList?.size ?: 0
}
override fun onBindViewHolder(holder: RankingViewHolder, position: Int) {
val user : User? = usersList?.get(position)
holder.rank.text = (usersList?.indexOf(user)).toString()
holder.name.text = user?.firstName
holder.points.text = user?.score.toString()
}
fun setUsers(users : List<User?>) {
usersList?.clear()
usersList?.addAll(users)
notifyDataSetChanged()
}
}
以及调用setUsers(users)的方法
private fun displayRanking(users : List<User>) {
visibleLayout.visibility = View.VISIBLE
errorImageView.visibility = View.GONE
progressBar.visibility = View.GONE
val logedInUser = SaveSharedPreference.getLogedInUser(context)
userRank.text = (adapter.usersList?.indexOf(logedInUser)).toString()
userName.text = logedInUser.firstName
userPoints.text = logedInUser.score.toString()
adapter.setUsers(users)
}
【问题讨论】:
-
你做了
recyclerview.adapter = adapter -
是的:适配器 = RankingAdapter() 和 recyclerView.adapter = 适配器
标签: android kotlin android-recyclerview