我正在一个应用程序中构建一个活动,用户可以在其中上传帖子,应用程序中的其他用户也可以查看帖子。
我构建了一个名为loadPost()
的函数,该函数将获取数据库中的内容并将其加载到我的视图中。不幸的是,我遇到了一个错误,
.addValueEventListener(ValueEventListener{
它告诉我接口需要一个构造函数。
下面是函数:
//*******************************************************
//Load posts to the screen from the database
//****************************************************
fun loadPost(){
myRef.child("posts")
.addValueEventListener(ValueEventListener{
override fun onDataChange(@NonNull dataSnapshot: DataSnapshot?) {
try {
postElements.clear()
postElements.add(Post("0","him","url","add"))
postElements.add(Post("0","him","url","ads"))
//Hashmap : Key and value (represents the post and node)
var td= dataSnapshot!!.value as HashMap<String,Any>
for(key in td.keys){
var post= td[key] as HashMap<String,Any>
postElements.add(Post(key,
post["text"] as String,
post["postImage"] as String
,post["userUID"] as String))
}
adpater!!.notifyDataSetChanged() //notify when there's an update in the adapter
}catch (ex:Exception){}
}
override fun onCancelled(p0: DatabaseError?) {
}
})
}
发布于 2018-08-23 04:05:48
下面是ValueEventListener
的构造函数应该类似的样子:
object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
}
}
这意味着,您必须替换这一行
.addValueEventListener(ValueEventListener {
通过以下方式:
.addValueEventListener(object : ValueEventListener {
参见https://youtrack.jetbrains.com/issue/KT-7770 (关于代码转换器)
https://stackoverflow.com/questions/51973371
复制相似问题