【发布时间】:2020-11-08 17:39:19
【问题描述】:
在我的SearchFragment.kt 我有:
private lateinit var userDb: FirebaseFirestore
private lateinit var users: MutableList<User>
private lateinit var adapter: UsersAdapters
fun getUsers() {
users = mutableListOf()
adapter = UsersAdapters(this, users)
userDb = FirebaseFirestore.getInstance()
val userReference = userDb.collection("users")
userReference.addSnapshotListener { snapshot, exception ->
if (exception != null || snapshot == null) {
Log.i("TAG", "Somethings Wrong", exception)
return@addSnapshotListener
}
val userList = snapshot.toObjects(User::class.java)
for (user in userList) {
Log.i("TAG", "Document ${user.username}")
}
}
}
在onViewCreated 中被调用
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
getUsers()
}
我的UserAdapter.kt 看起来像:
package com.example.myapp
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.item_user.view.*
import com.example.myapp.models.User
class UsersAdapters (val context: Context, val users: List<User>) :
RecyclerView.Adapter<UsersAdapters.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.item_user, parent, false)
return ViewHolder(view)
}
override fun getItemCount() = users.size
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(users[position])
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(user: User) {
itemView.etUsername.text = user?.username
Glide.with(context).load(user.profileURL).into(itemView.profileImage)
}
}
}
在SearchFragment.kt 的下面一行:
adapter = UsersAdapters(this, users)
我收到以下错误:
Type mismatch.
Required:
Context
Found:
SearchFragment
【问题讨论】: