【问题标题】:How to retrieve data from a Firebase database and store it in a ListArray<Class>? - Kotlin如何从 Firebase 数据库中检索数据并将其存储在 ListArray<Class> 中? - 科特林
【发布时间】:2018-06-02 22:13:31
【问题描述】:

我在从 Firebase 数据库中检索数据时遇到了一些问题... 这是我的简单代码

class Match (val teamOne: String, val teamTwo: String, val betType: String)


private var database = FirebaseDatabase.getInstance()
private var myRef = database.getReference()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    myRef.child("matches").addValueEventListener(object : ValueEventListener {
        override fun onDataChange(snapshot: DataSnapshot?) {
            val matches = snapshot!!.children
            matches.forEach(){
                println(it.value.toString())
            }
        }
        override fun onCancelled(p0: DatabaseError?) {
        }
    })
}

这是我从数据库中得到的:

I/System.out:{bet=GG, team1=Juventus, team2=Real Madrid}

I/System.out:{bet=Over 2.5, team1=Napoli, team2=Roma}

I/System.out:{bet=2, team1=Inter, team2=Milan}

I/System.out:{bet=X, team1=Atalanta, team2=Lazio}

I/System.out:{bet=X, team1=Crotone, team2=Spezia}

我的问题是:现在如何创建ListArray&lt;Match&gt;

谢谢大家!!!

【问题讨论】:

    标签: firebase firebase-realtime-database kotlin


    【解决方案1】:

    如果您仍然想知道并且不想使用另一个数据库,我有两种方法可以实现:

    val mapper = object : GenericTypeIndicator<HashMap<String, Match>>() {}
    val list = arrayListOf<Match>()
    val map = snapshot.getValue(mapper)
    map?.forEach {
        list.add(it.value)
    }
    

    或者:

    val list = MutableList<Match> = mutableListOf()
    snapshot.children.mapNotNullTo(list) {
        it.getValue<Match>(Match::class.java)
    }
    

    免责声明:Match 类可能必须是 data class

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      • 2020-04-08
      • 1970-01-01
      • 2021-05-02
      相关资源
      最近更新 更多