从实时数据库检索图像

问题描述 投票:0回答:2

我在这里添加 Firebase 图像:

NeonFragment.kt

class NeonFragment : Fragment() {

    private lateinit var binding: FragmentNeonBinding
    private lateinit var adapter: PhotosAdapter
    private lateinit var dbRef: DatabaseReference

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentNeonBinding.inflate(layoutInflater)

        dbRef = FirebaseDatabase.getInstance().reference
        adapter = PhotosAdapter()

        binding.neonRecyler.layoutManager = LinearLayoutManager(context)
        binding.neonRecyler.adapter = adapter

        dbRef.root.child("Image").addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                val list = ArrayList<ModelClass>()

                for (snap in snapshot.children) {
                    val model = snap.getValue(ModelClass::class.java)
                    model?.let { list.add(it) }
                }

                adapter.UpdateData(list)
                Toast.makeText(context, "OnData", Toast.LENGTH_SHORT).show()
            }

            override fun onCancelled(error: DatabaseError) {
                Toast.makeText(context, error.message, Toast.LENGTH_SHORT).show()
            }
        })

        return binding.root
    }
}

照片适配器.kt

class PhotosAdapter : RecyclerView.Adapter<PhotosAdapter.DataHolder>() {
    private var list = ArrayList<ModelClass>()
    private lateinit var context: Context

    class DataHolder(private val binding: LayoutPhotosBinding) : RecyclerView.ViewHolder(binding.root)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DataHolder {
        context = parent.context
        val binding = LayoutPhotosBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return DataHolder(binding)
    }

    override fun getItemCount(): Int {
        return list.size
    }

    override fun onBindViewHolder(holder: DataHolder, position: Int) {
        val dataModel = list[position]
        Glide.with(context).load(dataModel.image).into(holder.binding.imgData)
    }

    fun UpdateData(list: ArrayList<ModelClass>) {
        this.list = list
        notifyDataSetChanged()
    }
}

模型类

package com.custom.wallpaper.ModelClass

class ModelClass {
    var image: String = ""

    constructor(image: String) {
        this.image = image
    }
}

帮我解决这个问题,我想从 Firebase 实时获取数据到用户应用程序,我还添加了 firebase 图像,让您知道如何在 Firebase 中添加数据结构,我完全支持 Firebase,我添加了两个应用程序一个 Firebase 项目,一个管理员应用程序,他可以将图像添加到 firebase ,第二个应用程序给用户,然后可以访问图像

android firebase kotlin firebase-realtime-database
2个回答
1
投票

更新以下行

dbRef.root.child("Image").child("Neon").addValueEventListener(object : ValueEventListener {
        override fun onDataChange(snapshot: DataSnapshot) {
            val list = ArrayList<ModelClass>()

            for (snap in snapshot.children) {
                val model = snap.getValue(ModelClass::class.java)
                model?.let { list.add(it) }
            }

            adapter.UpdateData(list)
            Toast.makeText(context, "OnData", Toast.LENGTH_SHORT).show()
        }

        override fun onCancelled(error: DatabaseError) {
            Toast.makeText(context, error.message, Toast.LENGTH_SHORT).show()
        }
    })

0
投票

更新以下行

dbRef.root.child("Image").child("Neon").addValueEventListener(object : ValueEventListener {
        override fun onDataChange(snapshot: DataSnapshot) {
            val list = ArrayList<ModelClass>()

            for (snap in snapshot.children) {
                val model = snap.getValue(ModelClass::class.java)
                model?.let { list.add(it) }
            }

            adapter.UpdateData(list)
            Toast.makeText(context, "OnData", Toast.LENGTH_SHORT).show()
        }

        override fun onCancelled(error: DatabaseError) {
            Toast.makeText(context, error.message, Toast.LENGTH_SHORT).show()
        }
    })
© www.soinside.com 2019 - 2024. All rights reserved.