Android Groupie Recycle查看添加到同一可扩展项目的所有项目

Android Groupie Recycle查看添加到同一可扩展项目的所有项目,android,kotlin,android-recyclerview,expandablelistview,groupie,Android,Kotlin,Android Recyclerview,Expandablelistview,Groupie,我使用Groupie库来显示可扩展项,我的问题是,通过api调用检索的项不是显示在每个父可扩展头下,而是一起显示在列表的最后一项下 我想要这个: 标题1 子标题1 子标题1 子标题1 标题2 子标题2 子标题2 我有这个: 标题1 标题2 子标题1 子标题1 子标题1 子标题2 子标题2 这是我的密码 private fun updateUICurrentExercise(getCurrentWorkoutExercise: GetCurrentWorkoutExer

我使用Groupie库来显示可扩展项,我的问题是,通过api调用检索的项不是显示在每个父可扩展头下,而是一起显示在列表的最后一项下

我想要这个:

  • 标题1
    • 子标题1
    • 子标题1
    • 子标题1
  • 标题2
    • 子标题2
    • 子标题2
我有这个:

  • 标题1
  • 标题2
    • 子标题1
    • 子标题1
    • 子标题1
    • 子标题2
    • 子标题2
这是我的密码

 private fun updateUICurrentExercise(getCurrentWorkoutExercise: GetCurrentWorkoutExercise?) {

    adapter = GroupAdapter()
    val workouts = getCurrentWorkoutExercise?.workouts

    for (w in workouts!!) {

        exp = ExpandableGroup(WorkoutItem("Workout ${(w.workoutId)}"), false)
        getExercisesByWorkoutAPI(w.workoutId.toString())

        adapter.add(exp)
    }

    rvWorkout.adapter = adapter
}

 private fun getExercisesByWorkoutAPI(workoutId: String) {

    GetExercisesByWorkoutAPI.postData(jo, object : GetExercisesByWorkoutAPI.ThisCallback {
        override fun onSuccess(getExercisesByWorkout: GetExercisesByWorkout?) {
           
            for (e in getExercisesByWorkout?.exercises!!) {

                exp.add(Section(ExerciseItem(workoutId)))
            }
        }

    })
}

看起来你没用。因此,您需要创建一个头实例
WorkoutItem(“Workout${(w.workoutId)}”
对于每个
w
集合项,然后将此实例传递到
ExpandableGroup
构造函数和
部分。setHeader

基于@valerii的回复,这是问题的解决方法:在同一api调用中启动可扩展组及其项

private fun updateUICurrentExercise(getCurrentWorkoutExercise: GetCurrentWorkoutExercise?) {

    adapter = GroupAdapter()
    val workouts = getCurrentWorkoutExercise?.workouts

    for (w in workouts!!) {

        getExercisesByWorkoutAPI(w.workoutId.toString())
    }

    rvWorkout.adapter = adapter
}

 private fun getExercisesByWorkoutAPI(workoutId: String) {

    GetExercisesByWorkoutAPI.postData(jo, object : GetExercisesByWorkoutAPI.ThisCallback {
        override fun onSuccess(getExercisesByWorkout: GetExercisesByWorkout?) {

            val expandableGroup = ExpandableGroup(WorkoutItem("Workout $workoutId"), false)
            for (e in getExercisesByWorkout?.exercises!!) {
                expandableGroup.add(Section(ExerciseItem(e.exerciseName)))
            }
            adapter.add(expandableGroup)
        }
    })
}

您好@valerii,谢谢您的回复。我听到了您所说的并理解了它,只是不确定是否能够应用它,因为这是我尝试图书馆的第一周,所以我仍然在思考它。但是现在我将尝试您的建议,如果能够使它起作用,我将确保回到这里,并将其作为公认的答案。再次感谢。:)嗨@valerii,我认为问题可能实际上来自于等待api响应。我对节标题进行了一些处理,但结果似乎与我粘贴这一行时相同
exp.add(section(ExerciseItem(workUtid))
在从api成功之前,我将这些项显示在它们的父项下,但当我将它们放在api调用中时,它们都显示在最后一个项下。问题是,我现在甚至陷入了困境,因为我可能需要一些类似于观察者的东西,以便在api调用完成时填充我的项目,或者类似的东西,而我真的不知道它们。那么,这段代码可能适合您<代码>成功时覆盖乐趣(getExercisesByWorkout:getExercisesByWorkout?{
for(getExercisesByWorkout?.exerces!!){
可扩展组。添加(部分(ExerciseItem(workoutId)))
}
adapter.add(expandableGroup)
}
我建议您看看针对rest api调用的rxjava+改型。RxJava基于观察者模式的思想,提供了在线程之间方便切换的机会。我在下面的项目中使用了rxjava2和改型2。非常感谢@Valerii。它现在起作用了,我已经把你的答案标记为接受。在同一个api调用中启动可扩展组及其项是完全有意义的。我的计划之一是学习RXJava,因为当一个api比另一个api先完成时,我会不断遇到此类问题。再次感谢你的帮助。非常感谢。:)