'How to set image view retriever image from realtime firebase
I have try to use Glide to get the image resource from firebase to put inside the recyclerview. However it still cannot work for me because I have use the Kotlin but not Java file. Therefore, I need some help from some one.
Main code :
class UserlistActivity : AppCompatActivity() {
private lateinit var dbref : DatabaseReference
private lateinit var userRecyclerview : RecyclerView
private lateinit var userArrayList : ArrayList<User>
private lateinit var firebaseAuth:FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_userlist)
firebaseAuth= FirebaseAuth.getInstance()
userRecyclerview = findViewById(R.id.userList)
userRecyclerview.layoutManager = LinearLayoutManager(this)
userRecyclerview.setHasFixedSize(true)
userArrayList = arrayListOf<User>()
getUserData()
// val personNames = arrayOf(
// "Anna",
// "Alex",
// "Chris",
// "Doctor",
// "Vlad"
// )
//
// val arrayAdapter = ArrayAdapter(this,android.R.layout.simple_spinner_item,personNames)
//
// spinner.adapter=arrayAdapter
//
// spinner.onItemClickListener=object :AdapterView.OnItemSelectedListener,
// AdapterView.OnItemClickListener {
// override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
// textView.text=personNames[p2]
// }
//
// override fun onNothingSelected(p0: AdapterView<*>?) {
// TODO("Not yet implemented")
// }
//
// override fun onItemClick(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
// TODO("Not yet implemented")
// }
//
// }
}
private fun getUserData() {
dbref =FirebaseDatabase.getInstance("https://getandset-88041-default-rtdb.asia-southeast1.firebasedatabase.app/")
.getReference("Users")
dbref/*.child(firebaseAuth.uid!!)*/
.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
// val image="${snapshot.child("image").value}"
// try {
// Glide.with(this@UserlistActivity)
// .load(image)
// .placeholder(R.drawable.company_logo_1)
// .into(R.id.image)
// }
if (snapshot.exists()) {
for (userSnapshot in snapshot.children) {
val user = userSnapshot.getValue(User::class.java)
userArrayList.add(user!!)
}
userRecyclerview.adapter = MyAdapter(userArrayList)
}
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
}
}
Data class : (Why use Int for image because before I use Firebase, it can normally take the image resource in own code page).
data class User(
//hear change var __ <----path name
var age : String ?= null,
var firstName : String ?= null,
var lastName : String ?= null,
var image:Int?=null
)
My Adapter:
class MyAdapter(private val userList : ArrayList<User>) : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.user_item,
parent,false)
return MyViewHolder(itemView)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val currentitem = userList[position]
holder.firstName.text = currentitem.firstName
holder.age.text = currentitem.age
holder.lastName.text = currentitem.lastName
currentitem.image?.let { holder.image.setImageResource(it) }
//holder.image2.setImageResource(currentitem.image)
}
override fun getItemCount(): Int {
return userList.size
}
class MyViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView){
val firstName : TextView = itemView.findViewById(R.id.tvfirstName)
val age : TextView = itemView.findViewById(R.id.tvage)
val lastName : TextView = itemView.findViewById(R.id.tvlastName)
val image:ShapeableImageView=itemView.findViewById(R.id.image2)
}
}
Realtime Firebase :

Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
