buat temen-temen yang akses context dari fragment dengan cara
context!! //karena dia nullable bisa ganti sama ini ya
requireContext() // atau requireActivity()
buat temen-temen yang akses context dari fragment dengan cara
context!! //karena dia nullable bisa ganti sama ini ya
requireContext() // atau requireActivity()
recycler_news_list.viewTreeObserver .addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { override fun onGlobalLayout() { // progress.gone() | onScrollToBottom | aktifitas lainnya
recycler_news_list.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
@channel gaes, ini error yg ketika pake vector di pre-lollipop
https://android.jlelse.eu/android-vector-drawables-on-pre-lollipop-crash-solution-45c0c34f0160
Kumpulan ektension library binding adapters :
gradle (level app)
if (project.hasProperty('devBuild')) { splits.abi.enable = true splits.density.enable = true aaptOptions.cruncherEnabled = true }
buildTypes {
release {
@here ini untuk fungsi swiperefreshlayout, jadi kita ga perlu panggil view nya dari fragment, langsung set value dari vm, app:setRefreshing sama app:setOnRefreshListener udah bawaan dari swiperefreshlayoutnya, jadi gausah buat bindingadapter lagi
<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefreshPaginate" android:layout_width="match_parent" android:layout_height="wrap_content" app:setOnRefreshListener="@{()->mListener.onRefresh()}" app:setRefreshing="@{mViewModel.isRequesting}">
https://github.com/futurice/android-best-practices
@all
lumayan buat guides tambahan gaes, reshare xD
temen2 yg suka ketemu list of data, yuks mulai migrasi, buat large data jadiin sequence, biar maknyuss performance-nya https://itnext.io/kotlin-sequences-c5a3f6228eca
terutama untuk chained function, e.g:
list ?.functionEtc { [predicate] } ?.filter { [predicate] } ?.distinctyBy { [predicate] }