【发布时间】:2018-09-04 13:47:51
【问题描述】:
我调用getFavorite 方法从Activity 中的Database Class 获取数据。但它不会等待onCompleteListener。所以列表是空的。我该怎么办?
GetMovieActivity.java
private fun getPhotoListFromApi() {
val apiService = ApiClient.getRetrofitInstance().create(ApiService::class.java)
var list = ArrayList<MovieDetailsResponse>()
var db = Database()
db.getFavorite()
for (id in db.moviesID)
{
apiService.getMovieDetails(
id.toString().toInt(),
"922df43f1a304aca901feb9728b01943",
Locale.getDefault().language + "-" + Locale.getDefault().country)
.enqueue(object : Callback<MovieDetailsResponse> {
override fun onFailure(call: Call<MovieDetailsResponse>, t: Throwable) {
}
override fun onResponse(call: Call<MovieDetailsResponse>, response: Response<MovieDetailsResponse>) {
response.body()?.let { it ->
list.add(it)
}
}
})
}
adapter.setList((list as List<MovieListItem>?)!!)
}
Database.kt
fun getFavorite()
{
val dr = db.collection("Favorites").document(mAuth!!.uid) as DocumentReference
dr.get().addOnCompleteListener { task: Task<DocumentSnapshot> ->
if(task.isSuccessful)
{
moviesMap = task.result.data!!
moviesID = moviesMap.get("movies") as ArrayList<Any>
}
}
}
【问题讨论】:
-
签出this。
-
我仍然得到列表为空:/
-
应该可以,它等待的数据不是你想要的吗?
-
好的,谢谢。我现在可以做
标签: android firebase kotlin google-cloud-firestore