https://imgur.com/a/udnEfM8

사진이 커서 링크로 대체해서 올립니다. (사진 2개) - 기능만 구현하느라 UI는 덜 다듬었습니다ㅠ
링크내의 사진과같은 것을 만들고 있는데요,
우여곡절끝에 해당 기능을 위해서
sealed 클래스내의 모델(아이템) 2개를 어댑터하나에 멀티타입뷰를 사용해서
리스트를 나열하는 식으로 구현을 했습니다.
문제는 멀티뷰타입으로 쭉 리스트를 쭉 나열하는 형태라 그런지
세트 추가버튼을 눌렀을때, 각 Routine 아이템에 맞게 추가가되는것이아니라
제일 마지막에 무조건 Detail 아이템이 추가된다는 것입니다.
이부분은 아직 로직을 생각을 안해봤는데.. 어떻게 버튼을 눌렀을때 해당 Routine 포지션을 찾고 추가를 해야할지 막막하긴하네요 또.
아무튼 이리저리 보다가 Epoxy 라이브러리라고 복잡한 RecyclerView를 사용할때
좋은 라이브러리라고해서 Git 링크가 있길래 들어가봤는데..
그..별?도 7.8k 정도로 많고 (사실 진짜 많은게 어느정도인지 모르겠습니다..)
구글링해도 코드구현 관련 포스팅해서 나오길래 이걸로 교체를 해볼까하고 고민중인데
생각해보니 저는 아이템변화가 동적으로 일어나고 또 위에서도 말햇듯이
아이템 추가가 Routine 아이템에 맞는 위치에 Detail 아이템이 추가되어야하는데
결국 Epoxy 라이브러리를 쓰나 기존 방식으로하나
알맞은 위치에 넣는 로직을 구현해서 넣는건 똑같은거 아닌가해서
이게 맞는지 궁금해서 여쭈어봅니다..
아니면 Epoxy가 이러한 로직을 편하게 해주는 기능같은게 있나요?
------------------
sealed class RoutineItem() {
data class RoutineModel(
val workout: String, // 운동 종목
val unit: String, // 무게 단위 (kg or lbs)
var routineDetail: List<DetailModel> = listOf()
) : RoutineItem()
data class DetailModel(
val set: String, // 세트
val reps: String = "1",
val weight: String
) : RoutineItem()
}
Viewmodel
class WriteRoutineViewModel : ViewModel() {
private var _items: MutableLiveData<List<RoutineItem>> = MutableLiveData(listOf())
private val routines = mutableListOf<RoutineItem>()
var set: Int = 1
val items: LiveData<List<RoutineItem>> = _items
fun addRoutine(workout: String) {
routines.add(RoutineItem.RoutineModel(workout, "TEST"))
routines.add(RoutineItem.DetailModel("1","3","3"))
_items.postValue(routines)
}
fun addDetail(pos: Int) {
routines.add(RoutineItem.DetailModel("1","3","3"))
_items.postValue(routines)
}
fun deleteDetail(pos: Int) {
}
}