Groupie RecyclerПросмотреть все элементы, добавленные в один и тот же расширяемый элемент - PullRequest
0 голосов
/ 03 февраля 2019

Я использую библиотеку 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)))
            }
        }

    })
}

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Основываясь на ответе @ 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)
        }
    })
}
0 голосов
/ 03 февраля 2019

Похоже, вы пропустили Section.setHeader .Поэтому вам нужно будет создать один экземпляр заголовка WorkoutItem("Workout ${(w.workoutId)}" для каждого элемента коллекции w, а затем передать этот экземпляр в конструктор ExpandableGroup и Section.setHeader

...