'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 :

enter image description here



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source