250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 막무가내
- 프래그먼트
- 막내의막무가내 안드로이드 코틀린
- 부스트코스
- 프로그래머스 알고리즘
- 막내의막무가내 목표 및 회고
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 SQL
- 주택가 잠실새내
- 막내의막무가내 안드로이드 에러 해결
- 막내의막무가내 플러터 flutter
- 막내의막무가내 rxjava
- 막내의막무가내 플러터
- 부스트코스에이스
- 안드로이드 Sunflower 스터디
- 안드로이드 sunflower
- 막내의막무가내 일상
- 막내의 막무가내
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 코틀린
- 막내의막무가내 안드로이드
- Fragment
- 주엽역 생활맥주
- 막내의막무가내 알고리즘
- 막내의막무가내 프로그래밍
- 막내의막무가내
- 안드로이드
- flutter network call
- 2022년 6월 일상
- 막내의 막무가내 알고리즘
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[안드로이드] 코틀린 @BindingAdapter 매개변수 두 개 이상할 경우 예시 본문
728x90
[2021-04-13 업데이트]
https://developer.android.com/topic/libraries/data-binding/binding-adapters
https://developer.android.com/topic/libraries/data-binding/binding-adapters?hl=ko
기록용으로 남깁니다.
리사이클러뷰에서 사용한 경우 입니다. 더 불러오기 인지에 따른 분기처리 용으로 사용했습니다. (나중에 loadMore 가 필요 없는 로직으로도 되서 이후에는 그냥 없에주긴 했습니다.)
@BindingAdapter("setItems")
fun RecyclerView.setAdapterItems(items: List<Movie>?) {
with((adapter as MovieAdapter)) {
this.clear()
items?.let { this.addItems(it) }
}
}
예시
@BindingAdapter("setItems", "loadMore")
fun RecyclerView.setAdapterItems(items: List<Movie>?, loadMore: Boolean) {
with((adapter as MovieAdapter)) {
if (!loadMore) {
this.clear()
}
this.clear()
items?.let { this.addItems(it) }
}
}
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_movies"
android:layout_width="0dp"
android:layout_height="0dp"
android:clipToPadding="false"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/guideline"
bind:endlessScroll="@{vm}"
bind:loadMore="@{vm.loadMore}"
bind:setItems="@{vm.movieList}" />
bind:endlessScroll 은 별개지만 무한스크롤 용으로 사용했었습니다.
@BindingAdapter("endlessScroll")
fun RecyclerView.setEndlessScroll(
viewModel: MovieSearchViewModel
) {
val scrollListener =
object : EndlessRecyclerViewScrollListener(layoutManager as LinearLayoutManager) {
override fun onLoadMore(page: Int, totalItemsCount: Int, view: RecyclerView?) {
viewModel.requestPagingMovie(totalItemsCount + 1)
}
}
this.addOnScrollListener(scrollListener)
}
이 밖에 다른 BindingAdapter 예제를 다음 링크에 포스팅 해놨으니 참고해주세요 :)
youngest-programming.tistory.com/473
댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!
728x90
'안드로이드 > 코틀린 & 아키텍처 & Recent' 카테고리의 다른 글
[안드로이드] 코틀린 list 를 자바의 vararg 로 받을 수 있게하는 방법 (kotlin list to vararg) (0) | 2020.04.28 |
---|---|
[안드로이드] DI(Dependency Injection) 개념 및 KOIN 참고할 사이 (0) | 2020.04.15 |
[안드로이드] 안드로이드 아키텍처 스터디 총 정리(MVC,MVVM, AAC ViewModel, LiveData, Koin, Dagger2, RxJava2, Multi Module) Kotlin (2) | 2020.03.15 |
[안드로이드] 코틀린 Sharedpreferences 예제 코드 기록 (0) | 2020.03.13 |
[안드로이드] 코틀린 리사이클러뷰 무한 스크롤 구현 (0) | 2020.03.13 |
Comments