1. ViewPager
β
ViewPagerλ λ°μ΄ν°λ₯Ό νμ΄μ§ λ¨μλ‘ νμνκ³ μ’/μ° λ€μ§κΈ°λ₯Ό ν΅ν΄ νμ΄μ§λ₯Ό μ ννλ 컨ν μ΄λμ΄λ€.
β
β
β
1.2. μλλ‘μ΄λ μ΄λν°(Adapter)
β
μλλ‘μ΄λμμ λ°μ΄ν°λ¦¬μ€νΈλ₯Ό μμ΄ν λ¨μμ λ·° λλ λ·° μ§ν©μΌλ‘ νμν λ, μ΄λν°(adapter)λ₯Ό μ¬μ©νλ€.
μλλ‘μ΄λ μ΄λν°(Adapter)λ λ°μ΄ν° 리μ€νΈλ₯Ό μ λ ₯λ°μ νλ©΄μ νμν λ·°λ€μ μμ±νλ€.
β
β
μλλ‘μ΄λ μ΄λν°_yxxnForest
β
κ° μ΄λν°λ€μ νΉμ±μ λ°λΌ λ€λ₯΄κ² method κ° μμ±λμ΄μΌ νλ€. λ°λΌμ κ°κ°μ methodλ μ€λ²λΌμ΄λ(override)λμ΄μΌ νλ€.
β
β
β
β
1.3. νμ΄μ μ΄λν° PagerAdapter
β
νμ΄μ μ΄λν°(PagerAdapter)λ λ·°νμ΄μ (ViewPager)μ νμ΄μ§λ·°λ₯Ό μμ±νλλ° μ¬μ©λλ μ΄λν° ν΄λμ€μ΄λ€.
β
β
νμ΄μ μ΄λν°_yxxnForest
β
β
PagerAdapter λ μΆμ ν΄λμ€λ‘, PagerAdapter λ₯Ό λΆλͺ¨ ν΄λμ€λ‘ νμ¬ μ΄λ₯Ό μμλ°μ μ΄λν° ν΄λμ€ κ°μ²΄λ₯Ό ꡬνν΄μΌ νλ€.
β
β
νμ΄μ μ΄λν° μΆμν΄λμ€_yxxnForest
β
β
β
μμ μ΄λν° κ΅¬ν μ μ€λ²λΌμ΄λ(override)ν΄μΌ νλ methode
instantiateItem(ViewGroup, int) | positionμ ν΄λΉνλ νμ΄μ§ μμ± (μ. νμ΄μ§1->2->3) |
destroyItem(ViewGroup, int, Object) | position μμΉμ νμ΄μ§ μ κ±° (μ. νμ΄μ§1->2->3) |
getCount() | μ¬μ© κ°λ₯ν λ·°μ κ°μλ₯Ό λ°ν, λ·°νμ΄μ μ μ 체 νμ΄μ§ μ κ²°μ (μ. νμ΄μ§ 3κ°) |
isViewFromObject(View, Object) | νμ΄μ§λ·°κ° νΉμ ν€ κ°μ²΄(key object)μ μ°κ΄λλμ§ μ¬λΆ |
β
β
β
1.4 λ·°νμ΄μ μ νμ΄μ μμ±κ³Ό κ΄λ¦¬
β
λ·°νμ΄μ λ νμ νμ¬ μμΉν νμ΄μ§λ₯Ό ν¬ννμ¬ μ’ - μ° νλ μ©, μ΄ μΈ κ°μ νμ΄μ§λ₯Ό μμ± λ° κ΄λ¦¬νλ€.
β
λ·°νμ΄μ μ νμ΄μ μμ±κ³Ό κ΄λ¦¬_yxxnForest
β
β
β
2. ViewPager2
β
μ’μ° μ€ν¬λ‘€λ§λ§ κ°λ₯νλ ViewPager1κ³Ό λ€λ₯΄κ² μνμ’μ° μ€ν¬λ‘€λ§μ΄ κ°λ₯νλ€.
ViewPager2λRecyclerViewλ₯Ό κΈ°λ°μΌλ‘ νλ€.
PagerAdapterμμ RecyclerView.Adapterλ‘ λ체κ°λ₯νλ€.
notifyDataSetChanged κΈ°λ₯ μ¬μ© κ°λ₯νλ€
νμ΄μ§ μ΄λ²€νΈλ₯Ό addPgerChangeListener()μμ RegisterOnpageCallBack()μΌλ‘ λ체νλ€.
FragmentStatePagerAdapterμμ FragmentStateAdapterλ‘ λ체νλ€.
β
β
β
ViewPager2λ₯Ό μ¬μ©νκΈ° μν΄μλ bulid.gradle(Module:app) νμΌμ λ€μ AndroidX μ’ μ νλͺ©μ μΆκ°ν΄μΌ νλ€.
dependencies { implementation "androidx.viewpager2:viewpager2:1.0.0" }
β
β
β
λ©μΈ λ μ΄μμ xml νμΌμ <ViewPager2> μμ ―μ μΆκ°νλ€.
activity_main.xml
<androidx.viewpager2.widget.ViewPager2 xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" />
β
β
β
ViewPager2λ RecyclerViewμ μ¬μ©λ²μ΄ κ°λ€. λ°λΌμ RecyclerView.Adapterμ ViewHolderκ° νμνλ€.
β
β
RecyclerView.Adapterλ₯Ό ꡬννκΈ° μν΄μ μ€λ²λΌμ΄λ(override)λμ΄μΌ νλ methode κ° μλ€.
createViewHolder(ViewGroup parent, int viewType) | viewTypeννμ μμ΄ν λ·°λ₯Ό μν λ·°νλ κ°μ²΄ μμ± |
onBindViewHolder(ViewHolder holder, int position) | position μ ν΄λΉνλ λ°μ΄ν°λ₯Ό λ·°νλμ μμ΄ν
λ·°μ νμ (λ: κ° λ·°μ λ€μ΄κ°μΌν λ°μ΄ν°λ₯Ό μμ΄ν μμΉμ λ§κ² λ°μ΄ν° λμ ν΄μ£Όλ κ²) |
getItemCount() | μ 체 μμ΄ν
κ°μ λ°ν (λ: μ 체 λ·°μ μ. λͺ νμ΄μ§κ° μλ) |
β
β
β
μμΈν μμ λ μΆνμ ν μ΄νλ‘μ νΈλ₯Ό ν΅ν΄ μ 리ν μμ μ΄λ€.
β
β
β
β
β
β
곡λΆν λ μ°Έκ³ ν μλ£
https://recipes4dev.tistory.com/148
https://lakue.tistory.com/18
https://developer.android.com/reference/kotlin/androidx/viewpager/widget/PagerAdapter
https://recipes4dev.tistory.com/154?category=790402
https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.Adapter
https://www.youtube.com/watch?v=FJvUKLNx6nw&list=PLhba_6zsWOEJr53c2yvx5IC--XRQpdLM6&index=3&t=0s
[μΆμ²] [Anroid] ViewPager1κ³Ό ViewPager2|
'Android' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Android] μλλ‘μ΄λ REST API (0) | 2021.06.18 |
---|---|
[Android] μλλ‘μ΄λ API (0) | 2021.06.18 |
[Kotlin] μ½νλ¦° μμ±μ ( Constructor ) (0) | 2021.06.18 |
[Kotlin] λ³μμ ν¨μ 1 (0) | 2021.06.18 |
[Kotiln] μ½νλ¦° κΈ°λ³Έ μμ±λ²νλ‘νμΌ (0) | 2021.06.18 |