【发布时间】:2018-06-01 12:30:13
【问题描述】:
class MainActivity : AppCompatActivity() {
var adapter : MyTrackers.ContactAdapter?=null
var listOfContact = ArrayList<UserContact>()
var databaseRef:DatabaseReference?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var userData = UserData(this)
userData.loadPhoneNumber()
databaseRef = FirebaseDatabase.getInstance().reference
//For debug only
//dummyData()
adapter = MyTrackers.ContactAdapter(this, listOfContact)
lvContactList.adapter = adapter
lvContactList.onItemClickListener = AdapterView.OnItemClickListener{
parent, view, position, id ->
val userInfo = listOfContact[position]
UserData.myTrackers.remove(userInfo.phoneNumber)
}
}
override fun onResume() {
super.onResume()
refereshUsers()
}
fun refereshUsers(){
val userData = UserData(this)
if(userData.loadPhoneNumber()=="empty"){ //FirstTIme activity Starts
return
}
databaseRef!!.child("Users").child(userData.loadPhoneNumber())
.child("Finders").addValueEventListener(object : ValueEventListener{
override fun onDataChange(dataSnapshot: DataSnapshot) {
val td = dataSnapshot!!.value as HashMap<String,Any>
listOfContact.clear()
if(td==null){
listOfContact.add(UserContact("NO_USERS","Nothing"))
adapter!!.notifyDataSetChanged()
return
}
for (key in td.keys){
listOfContact.add(UserContact("NO_NAME",key))
}
}
我总是在我的 onDataChange 方法中的 td 声明中将上述 java.lang.String 无法转换为 java.util.HashMap。每当我尝试基于以前的 stackoverflow 解决方案进行调试时,它仍然无法正常工作,有人可以告诉我我正在犯什么错误以及如何进行必要的更正。
这是我的数据库的结构
"Users" : {
"7151418" : {
"Finders" : "2018/03/26 20:03:02",
"request" : "2018/03/26 20:03:02"
}
}
}
【问题讨论】:
-
请添加您的数据库结构。
-
谢谢,我想我已经在这里了
-
在哪里,我看不到。通过数据库结构,我的意思是您的数据库中已有的内容。
-
你看过了吗@Alex
标签: android firebase firebase-realtime-database kotlin real-time