Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
84e4c1e
chore: update migrate-to-viewbinding skill with lessons learned
XanderZhu Jun 2, 2026
c1499a1
chore: remove viewBindingIgnore from view_achievement_tile layout
XanderZhu Jun 2, 2026
15c26ef
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
e3e5dc1
refactor: migrate 6 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
6f828cc
refactor: migrate 4 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
6ff0cb2
refactor: migrate 4 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
67a7f62
refactor: migrate 8 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
e0f6919
refactor: migrate HomeFragment from synthetic to viewBinding
XanderZhu Jun 2, 2026
4a0731a
refactor: migrate MainFeedActivity from synthetic to viewBinding
XanderZhu Jun 2, 2026
8b41456
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
f8135ec
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
71133e5
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
c2493d8
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
0361f26
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
9228644
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
18aaf3a
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
4ae88f7
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
7178374
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 2, 2026
cc20eee
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
fc40af2
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
ab8558f
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
4c3d576
Merge pull request #984 from StepicOrg/feature/APPS-3860
tikhokhod Jun 3, 2026
e9bc7e1
chore: add migration task files and Ralph config for autonomous ViewB…
XanderZhu Jun 3, 2026
574101d
chore: remove docs/ and .ralph/ from git tracking
XanderZhu Jun 3, 2026
9113495
Merge remote-tracking branch 'origin/development' into worktree/synth…
XanderZhu Jun 3, 2026
7485139
chore: remove ralph.yml from git tracking
XanderZhu Jun 3, 2026
15da6de
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
44d1bf3
chore: update skill — proper <include> handling via binding chain, no…
XanderZhu Jun 3, 2026
fe8d502
chore: update skill.md — proper <include> handling via binding chain
XanderZhu Jun 3, 2026
8902242
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
d4b905e
Fix include layout usage from binding
XanderZhu Jun 3, 2026
9bfeb54
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
5a5a114
Fix include layout usage from binding
XanderZhu Jun 3, 2026
725fb44
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
0543e6e
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
2efba30
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
8fa1fa7
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
7b34d49
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
4e178c8
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
a61e483
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
2865548
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
0d0694d
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
582c9d8
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
62c0087
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
5eef5be
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
278f536
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
0739209
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
d8117f9
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
5d87f94
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
981ffc3
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
f60b815
Migrate step quiz fragments to ViewBinding
XanderZhu Jun 3, 2026
4bd0884
refactor: migrate 5 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
79c9862
refactor: migrate 3 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
d6c1efa
refactor: migrate 4 APPS-3860 files from synthetic to viewBinding
XanderZhu Jun 3, 2026
f0bb0e1
Migrate course list search toolbar to view binding
XanderZhu Jun 4, 2026
977e882
Use binding for step quiz action controls
XanderZhu Jun 4, 2026
0392091
Replace review quiz lookups with generated bindings
XanderZhu Jun 4, 2026
61ccece
Ignore Ralph state and migration tracker
XanderZhu Jun 4, 2026
fe79246
Fix containerCarouselCount view access in the CourseListViewDelegate.kt
XanderZhu Jun 4, 2026
c184988
Fix toolbar ids resolving
XanderZhu Jun 4, 2026
eead6a3
Fix EditStepSourceDialogFragment.kt centeredToolbar views search
XanderZhu Jun 5, 2026
7dc76ef
Replace redundant findViewById for exo_player_control_view.xml with …
XanderZhu Jun 7, 2026
a05fcc2
Fix StepFragment.kt related delegates root view binding accept instea…
XanderZhu Jun 12, 2026
4cd1afc
Refine view binding delegate usage
XanderZhu Jun 12, 2026
6782d42
chore: drop local migration tooling artifacts
XanderZhu Jun 12, 2026
b78f142
Merge pull request #986 from StepicOrg/worktree/synthetic-migration
XanderZhu Jun 13, 2026
fd80180
Migrate kotlin-android-extensions to kotlin-parcelize
XanderZhu Jun 12, 2026
9942c78
Merge pull request #988 from StepicOrg/feature/migrate_kotlinx.androi…
XanderZhu Jun 13, 2026
e59410f
chore: remove remaining LayoutContainer usage
XanderZhu Jun 14, 2026
3444cd4
Merge pull request #989 from StepicOrg/feature/layoutcontainer-migration
XanderZhu Jun 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 1 addition & 5 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-parcelize'
apply plugin: 'com.google.firebase.crashlytics'
apply from: '../code_quality_tools/jacoco.gradle'
//apply from: '../code_quality_tools/findbugs.gradle'
Expand Down Expand Up @@ -156,10 +156,6 @@ android {
namespace 'org.stepic.droid'
}

androidExtensions {
experimental = true
}

configurations {
androidTestImplementation {
// accessibility-test-framework pulls the full checker jar, which duplicates checker-qual from Guava.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package org.stepik.android.view.debug.ui.adapter.delegate

import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import by.kirich1409.viewbindingdelegate.viewBinding
import com.android.billingclient.api.Purchase
import kotlinx.android.extensions.LayoutContainer
import kotlinx.android.synthetic.debug.item_in_app_purchase.*
import org.stepic.droid.R
import org.stepic.droid.databinding.ItemInAppPurchaseBinding
import org.stepic.droid.util.DateTimeHelper
import org.stepic.droid.util.toObject
import org.stepik.android.domain.course.model.CoursePurchasePayload
import ru.nobird.android.ui.adapterdelegates.AdapterDelegate
import ru.nobird.android.ui.adapterdelegates.DelegateViewHolder
Expand All @@ -24,17 +22,21 @@ class InAppPurchaseAdapterDelegate(
override fun onCreateViewHolder(parent: ViewGroup): DelegateViewHolder<Purchase> =
ViewHolder(createView(parent, R.layout.item_in_app_purchase))

private inner class ViewHolder(override val containerView: View) : DelegateViewHolder<Purchase>(containerView), LayoutContainer {
private inner class ViewHolder(
containerView: android.view.View
) : DelegateViewHolder<Purchase>(containerView) {
private val viewBinding: ItemInAppPurchaseBinding by viewBinding { ItemInAppPurchaseBinding.bind(itemView) }

init {
inAppPurchaseConsumeAction.setOnClickListener { itemData?.let(onItemClick) }
viewBinding.inAppPurchaseConsumeAction.setOnClickListener { itemData?.let(onItemClick) }
}
override fun onBind(data: Purchase) {
inAppPurchaseSku.text = data.skus.first()
inAppPurchaseTime.text = context.getString(R.string.debug_purchase_date, DateTimeHelper.getPrintableDate(Date(data.purchaseTime), DateTimeHelper.DISPLAY_DATETIME_PATTERN, TimeZone.getDefault()))
inAppPurchaseStatus.text = context.getString(R.string.debug_purchase_status, data.purchaseState.toString())
viewBinding.inAppPurchaseSku.text = data.skus.first()
viewBinding.inAppPurchaseTime.text = context.getString(R.string.debug_purchase_date, DateTimeHelper.getPrintableDate(Date(data.purchaseTime), DateTimeHelper.DISPLAY_DATETIME_PATTERN, TimeZone.getDefault()))
viewBinding.inAppPurchaseStatus.text = context.getString(R.string.debug_purchase_status, data.purchaseState.toString())

inAppPurchaseCourse.isVisible = data.developerPayload.isNotEmpty()
inAppPurchaseUser.isVisible = data.developerPayload.isNotEmpty()
viewBinding.inAppPurchaseCourse.isVisible = data.developerPayload.isNotEmpty()
viewBinding.inAppPurchaseUser.isVisible = data.developerPayload.isNotEmpty()
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package org.stepik.android.view.debug.ui.adapter.delegate

import android.view.View
import android.view.ViewGroup
import kotlinx.android.extensions.LayoutContainer
import kotlinx.android.synthetic.main.item_split_test_data.*
import by.kirich1409.viewbindingdelegate.viewBinding
import org.stepic.droid.R
import org.stepic.droid.databinding.ItemSplitTestDataBinding
import org.stepik.android.domain.debug.model.SplitTestData
import ru.nobird.android.ui.adapterdelegates.AdapterDelegate
import ru.nobird.android.ui.adapterdelegates.DelegateViewHolder
Expand All @@ -18,13 +18,15 @@ class SplitTestDataAdapterDelegate(
override fun onCreateViewHolder(parent: ViewGroup): DelegateViewHolder<SplitTestData> =
ViewHolder(createView(parent, R.layout.item_split_test_data))

private inner class ViewHolder(override val containerView: View) : DelegateViewHolder<SplitTestData>(containerView), LayoutContainer {
private inner class ViewHolder(containerView: View) : DelegateViewHolder<SplitTestData>(containerView) {
private val viewBinding: ItemSplitTestDataBinding by viewBinding { ItemSplitTestDataBinding.bind(itemView) }

init {
containerView.setOnClickListener { itemData?.let { onItemClick(it.splitTestName, it.splitTestValue, it.splitTestGroups) } }
}
override fun onBind(data: SplitTestData) {
splitTestGroupTitle.text = data.splitTestName
splitTestGroupValue.text = data.splitTestValue
viewBinding.splitTestGroupTitle.text = data.splitTestName
viewBinding.splitTestGroupValue.text = data.splitTestValue
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AppCompatDelegate
import androidx.viewpager2.widget.ViewPager2
import by.kirich1409.viewbindingdelegate.viewBinding
import com.google.android.material.tabs.TabLayoutMediator
import kotlinx.android.synthetic.main.activity_adaptive_stats.*
import org.stepic.droid.R
import org.stepic.droid.adaptive.model.AdaptiveStatsTabs
import org.stepic.droid.adaptive.ui.adapters.AdaptiveStatsViewPagerAdapter
import org.stepic.droid.analytic.AmplitudeAnalytic
import org.stepic.droid.base.FragmentActivityBase
import org.stepic.droid.databinding.ActivityAdaptiveStatsBinding
import org.stepic.droid.ui.util.initCenteredToolbar
import org.stepic.droid.util.AppConstants

Expand All @@ -21,6 +22,7 @@ class AdaptiveStatsActivity : FragmentActivityBase() {
}
}

private val adaptiveStatsBinding: ActivityAdaptiveStatsBinding by viewBinding(ActivityAdaptiveStatsBinding::bind)
private var courseId: Long = 0
private var hasSavedInstanceState: Boolean = false
private lateinit var adapter: AdaptiveStatsViewPagerAdapter
Expand All @@ -46,24 +48,24 @@ class AdaptiveStatsActivity : FragmentActivityBase() {

adapter = AdaptiveStatsViewPagerAdapter(this, courseId)

pager.adapter = adapter
pager.offscreenPageLimit = adapter.itemCount
adaptiveStatsBinding.pager.adapter = adapter
adaptiveStatsBinding.pager.offscreenPageLimit = adapter.itemCount

TabLayoutMediator(tabLayout, pager) { tab, position ->
TabLayoutMediator(adaptiveStatsBinding.tabLayout, adaptiveStatsBinding.pager) { tab, position ->
tab.setText(AdaptiveStatsTabs.values()[position].fragmentTitleRes)
}.attach()
}

override fun onResume() {
super.onResume()
pager.registerOnPageChangeCallback(onPageChangeListener)
if (!hasSavedInstanceState && pager.currentItem == 0) {
adaptiveStatsBinding.pager.registerOnPageChangeCallback(onPageChangeListener)
if (!hasSavedInstanceState && adaptiveStatsBinding.pager.currentItem == 0) {
onPageChangeListener.onPageSelected(0)
}
}

override fun onPause() {
pager.unregisterOnPageChangeCallback(onPageChangeListener)
adaptiveStatsBinding.pager.unregisterOnPageChangeCallback(onPageChangeListener)
super.onPause()
}

Expand All @@ -74,4 +76,4 @@ class AdaptiveStatsActivity : FragmentActivityBase() {
}
return super.onOptionsItemSelected(item)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.core.widget.ImageViewCompat
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.adaptive_rating_item.view.*
import org.stepic.droid.R
import org.stepic.droid.databinding.AdaptiveRatingItemBinding
import org.stepic.droid.preferences.SharedPreferenceHelper
import org.stepik.android.model.adaptive.RatingItem

Expand Down Expand Up @@ -110,11 +110,12 @@ class AdaptiveRatingAdapter(
}

class RatingViewHolder(val root: View) : RecyclerView.ViewHolder(root) {
val icon: ImageView = root.icon
val rank: TextView = root.rank
val exp: TextView = root.exp
val name: TextView = root.name
private val binding = AdaptiveRatingItemBinding.bind(root)
val icon: ImageView = binding.icon
val rank: TextView = binding.rank
val exp: TextView = binding.exp
val name: TextView = binding.name
}

class SeparatorViewHolder(view: View) : RecyclerView.ViewHolder(view)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ import androidx.recyclerview.widget.RecyclerView
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.data.LineData
import com.github.mikephil.charting.data.LineDataSet
import kotlinx.android.synthetic.main.adaptive_header_stats.view.*
import kotlinx.android.synthetic.main.adaptive_item_week.view.*
import org.stepic.droid.R
import org.stepic.droid.adaptive.model.AdaptiveWeekProgress
import org.stepic.droid.databinding.AdaptiveHeaderStatsBinding
import org.stepic.droid.databinding.AdaptiveItemWeekBinding
import org.stepic.droid.util.defaultLocale
import org.stepic.droid.util.resolveColorAttribute
import java.util.ArrayList
Expand Down Expand Up @@ -111,16 +111,18 @@ class AdaptiveWeeksAdapter : RecyclerView.Adapter<AdaptiveWeeksAdapter.StatsView

sealed class StatsViewHolder(view: View) : RecyclerView.ViewHolder(view) {
class WeekViewHolder(root: View) : StatsViewHolder(root) {
val total: TextView = root.total
val start: TextView = root.start
val end: TextView = root.end
private val binding = AdaptiveItemWeekBinding.bind(root)
val total: TextView = binding.total
val start: TextView = binding.start
val end: TextView = binding.end
}

class StatsHeaderViewHolder(val root: View) : StatsViewHolder(root) {
val chart: LineChart = root.chart
val expTotal: TextView = root.expTotal
val level: TextView = root.level
val expThisWeek: TextView = root.expThisWeek
private val binding = AdaptiveHeaderStatsBinding.bind(root)
val chart: LineChart = binding.chart
val expTotal: TextView = binding.expTotal
val level: TextView = binding.level
val expThisWeek: TextView = binding.expThisWeek

init {
chart.description.isEnabled = false
Expand All @@ -138,4 +140,4 @@ class AdaptiveWeeksAdapter : RecyclerView.Adapter<AdaptiveWeeksAdapter.StatsView
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import android.webkit.WebView
import android.widget.Button
import androidx.annotation.StringRes
import androidx.core.widget.doOnTextChanged
import kotlinx.android.synthetic.main.adaptive_quiz_card_view.view.*
import org.stepic.droid.R
import org.stepic.droid.adaptive.ui.animations.CardAnimations
import org.stepic.droid.adaptive.ui.custom.CardScrollView
Expand All @@ -16,6 +15,7 @@ import org.stepic.droid.base.App
import org.stepic.droid.core.ScreenManager
import org.stepic.droid.core.presenters.CardPresenter
import org.stepic.droid.core.presenters.contracts.CardView
import org.stepic.droid.databinding.AdaptiveQuizCardViewBinding
import org.stepic.droid.ui.quiz.QuizDelegate
import org.stepic.droid.ui.util.snackbar
import org.stepic.droid.util.resolvers.StepTypeResolver
Expand All @@ -30,27 +30,29 @@ import kotlin.math.max
class QuizCardViewHolder(
private val root: View
) : ContainerView.ViewHolder(root), CardView {
private val curtain = root.curtain
private val answersProgress = root.answersProgress
private val titleView = root.title
val question: LatexView = root.question
val quizViewContainer: ViewGroup = root.quizViewContainer
val separatorAnswers: View = root.separatorAnswers
private val binding = AdaptiveQuizCardViewBinding.bind(root)

val actionButton: Button = root.submit
val nextButton: Button = root.next
private val correctSign = root.correct
private val wrongSign = root.wrong
private val wrongButton = root.wrongRetry
private val hint = root.hint
private val curtain = binding.curtain
private val answersProgress = binding.answersProgress
private val titleView = binding.title
val question: LatexView = binding.question
val quizViewContainer: ViewGroup = binding.quizViewContainer
val separatorAnswers: View = binding.separatorAnswers.root

val scrollContainer: CardScrollView = root.scroll
val container: SwipeableLayout = root.container
val actionButton: Button = binding.submit
val nextButton: Button = binding.next
private val correctSign = binding.correct
private val wrongSign = binding.wrong
private val wrongButton = binding.wrongRetry
private val hint = binding.hint

private val hardReaction = root.reaction_hard
private val easyReaction = root.reaction_easy
val scrollContainer: CardScrollView = binding.scroll
val container: SwipeableLayout = binding.container

val cardView: androidx.cardview.widget.CardView = root.card
private val hardReaction = binding.reactionHard
private val easyReaction = binding.reactionEasy

val cardView: androidx.cardview.widget.CardView = binding.card

private lateinit var quizDelegate: QuizDelegate

Expand Down Expand Up @@ -224,4 +226,4 @@ class QuizCardViewHolder(
hint.visibility = View.GONE
actionButton.visibility = View.VISIBLE
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@ package org.stepic.droid.adaptive.ui.dialogs

import android.app.Dialog
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import com.github.jinatonic.confetti.CommonConfetti
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import io.reactivex.Completable
import io.reactivex.Scheduler
import kotlinx.android.synthetic.main.dialog_adaptive_level.view.*
import org.stepic.droid.R
import org.stepic.droid.base.App
import org.stepic.droid.databinding.DialogAdaptiveLevelBinding
import org.stepic.droid.di.qualifiers.MainScheduler
import org.stepic.droid.util.resolveColorAttribute
import org.stepic.droid.util.resolveFloatAttribute
Expand Down Expand Up @@ -41,14 +40,14 @@ class AdaptiveLevelDialogFragment : DialogFragment() {

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val alertDialogBuilder = MaterialAlertDialogBuilder(requireContext())
val root = View.inflate(context, R.layout.dialog_adaptive_level, null)
root.adaptiveLevelDialogTitle.text = level.toString()
val binding = DialogAdaptiveLevelBinding.inflate(layoutInflater)
binding.adaptiveLevelDialogTitle.text = level.toString()

root.continueButton.setOnClickListener { dismiss() }
binding.continueButton.setOnClickListener { dismiss() }

expLevelDialogConfetti = root.adaptiveLevelDialogConfetti
expLevelDialogConfetti = binding.adaptiveLevelDialogConfetti

alertDialogBuilder.setView(root)
alertDialogBuilder.setView(binding.root)
return alertDialogBuilder.create()
}

Expand Down Expand Up @@ -79,4 +78,4 @@ class AdaptiveLevelDialogFragment : DialogFragment() {
.setEmissionRate(15f)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,20 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.StringRes
import kotlinx.android.synthetic.main.fragment_adaptive_onboarding.*
import by.kirich1409.viewbindingdelegate.viewBinding
import org.stepic.droid.R
import org.stepic.droid.adaptive.model.Card
import org.stepic.droid.adaptive.ui.adapters.OnboardingQuizCardsAdapter
import org.stepic.droid.base.FragmentBase
import org.stepic.droid.databinding.FragmentAdaptiveOnboardingBinding
import org.stepic.droid.ui.util.initCenteredToolbar
import org.stepik.android.model.Block
import org.stepik.android.model.Lesson
import org.stepik.android.model.Step
import org.stepik.android.model.attempts.Attempt

class AdaptiveOnboardingFragment: FragmentBase() {
private val onboardingBinding: FragmentAdaptiveOnboardingBinding by viewBinding(FragmentAdaptiveOnboardingBinding::bind)
private val adapter = OnboardingQuizCardsAdapter {
if (it == 0) onOnboardingCompleted()
}
Expand All @@ -31,7 +33,7 @@ class AdaptiveOnboardingFragment: FragmentBase() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
cardsContainer.setAdapter(adapter)
onboardingBinding.cardsContainer.setAdapter(adapter)
initCenteredToolbar(R.string.adaptive_onboarding_title, showHomeButton = true, homeIndicatorRes = getCloseIconDrawableRes())
}

Expand Down Expand Up @@ -64,4 +66,4 @@ class AdaptiveOnboardingFragment: FragmentBase() {
adapter.destroy()
super.onDestroy()
}
}
}
Loading