-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Description
2026 update: Task List
- Audit adapter/ViewHolder usage: chore: convert GradeNowDialog to ViewBinding #19565 (comment)
- Remove the merge tag in toolbar.xml
- it's not needed(we already have a single view as root and we don't append this included layout to a Toolbar view) and it also breaks ViewBinding(Missing required view with ID:
com.ichi2.anki.debug:id/toolbar).
- it's not needed(we already have a single view as root and we don't append this included layout to a Toolbar view) and it also breaks ViewBinding(Missing required view with ID:
- architecture review: vendor 'vbpd' David Allison 18/09/2025, 14:50
- refactor: use
BrowserColumnCellBinding#20188 -
refactor: remove 'layout' from MultimediaFragment David Allison 12/09/2025, 02:51 - chore: convert MultimediaImageFragment to ViewBinding #20186
- chore: convert DeckSelectionDialog to ViewBinding #20185
- chore: convert BrowserColumnSelectionFragment to ViewBinding #20184
- chore: convert FlagAdapter to ViewBinding #20183
- chore: convert RepositionCardFragment to ViewBinding #20165
- Convert FindAndReplaceDialogFragment to ViewBinding #19940
- chore: convert ColumnSelectionDialogFragment to ViewBinding #20153
- chore: convert ResizingDivider to ViewBinding #20152
- chore: convert AboutFragment to ViewBinding #20151
- chore: convert AudioRecordView to ViewBinding #20150
- chore: convert MultiColumnViewHolder to ViewBinding #20149
- chore: convert ControlPreferenceDialogFragment to ViewBinding #20148
- chore: convert GesturePicker to ViewBinding #20139
- chore: convert AlertDialogFacade to ViewBinding #20138
- chore: convert TemplatePreviewerPage to ViewBinding David Allison 12/09/2025, 00:29
- chore: convert SettingsFragment to ViewBinding #20137
- chore: convert KeyPicker to ViewBinding #20135
- chore: convert MultimediaBottomSheet to ViewBinding #19620
- chore: convert AudioVideoFragment to ViewBinding #20134
- chore: convert AudioRecordingFragment to ViewBinding #20132
- chore: convert HelpDialog to ViewBinding #20083
- chore: convert AxisPicker; AxisSelector; GestureDisplay to ViewBinding #19564
- chore: convert DeckPickerFloatingActionMenu to ViewBinding #20081
- chore: convert ScheduleRemindersAdapter to ViewBinding #20080
- chore: convert SharedDecksDownloadFragment to ViewBinding #20079
- chore: convert NoteTypesAdapter to ViewBinding #20076
- chore: convert TagLimitFragment & IncludedExcludedTagsAdapter to ViewBinding #20075
- refactor(custom-study): use userInputValue #20074
- CustomStudyDialog: 12ef705
- chore: convert SchedulerReminders to ViewBinding #20012
- WhiteboardFragment: 8e869ad
- chore: convert CheckPronunciationFragment to ViewBinding #20011
- chore: convert PreviewerFragment to ViewBinding #20010
- chore: convert ReviewerMenuView to ViewBinding #20009
- chore: convert ReviewerMenuSettingsFragment to ViewBinding #20008
- chore: convert ReviewerMenuSettingsAdapter to ViewBinding & document class #19621
- chore: convert AudioPlayView to ViewBinding #19900
- refactor: remove DeckDropDownAdapter #19899
- chore: convert TagsDialog to ViewBinding #19894
- chore: convert EditDeckDescriptionDialog to ViewBinding #19566
- chore: convert EmptyCardsDialogFragment to ViewBinding #19637
- chore: convert FlagRenameDialog to ViewBinding #19892
- chore: convert SavedBrowserSearchesDialogFragment to ViewBinding #19891
- chore: convert LocaleSelectionDialog to ViewBinding #19890
- chore: convert TtsVoicesDialogFragment to ViewBinding #19482
- chore: convert GradeNowDialog to ViewBinding #19565
- chore: convert BrowserOptionsDialog to ViewBinding #19591
- chore: convert ExportDialogFragment to ViewBinding #19889
- chore: convert BrowserColumnSelectionAdapter to ViewBinding #19608
- chore: convert NoteFieldAdapter to ViewBinding #19888
- chore: convert ImageCropper to ViewBinding #19708
- chore: convert ForgetCardsDialog to ViewBinding #19593
- chore: convert WidgetConfigScreenAdapter to ViewBinding #19707
- chore: convert TagsArrayAdapter to ViewBinding #19706
- chore: convert DeckAdapter.ViewHolder to ViewBinding #19705
- chore: convert MediaCheckFragment to ViewBinding #19568
- chore: convert AddNewNotesType to ViewBinding #19704
- chore: convert ReviewerFragment to ViewBinding #19496
- chore: convert FieldEditLine to ViewBinding #19567
- chore: convert SetDueDateDialog to ViewBinding #19483
- chore: convert AllPermissionsExplanationFragment to ViewBinding #20202
- chore: convert PermissionsUntil29Fragment & PermissionsStartingAt30Fragment to ViewBinding #20201
- chore: convert PermissionsItem to ViewBinding #19525
- chore: convert SetupCollectionFragment to ViewBinding #19524
- ImageOcclusionBottomSheetFragment
- chore: convert TtsVoicesDialogFragment to ViewBinding #19482
- chore: convert InstantNoteEditorActivity to ViewBinding #20200
- chore: convert CardAnalysisWidgetConfig to ViewBinding #19523
- chore: convert DeckPickerWidgetConfig to ViewBinding #19522
- refactor: IntroductionActivity (ViewBinding) #19526
- chore: convert SharedDecksActivity to ViewBinding #19521
- chore: convert CardTemplateBrowserAppearanceEditor to ViewBinding #19511
- chore: convert TemplatePreviewerFragment to ViewBinding #19520
- chore: convert CardTemplateEditor to ViewBinding #19502
- chore: convert SingleFragmentActivity to be ViewBinding compatible #19501
- chore: convert AnkiDroidCrashReportDialog to ViewBinding #20199
- chore: convert Info to ViewBinding #19471
-
chore: convert Preferences to ViewBinding David Allison 10/09/2025, 22:27 - chore: convert MultimediaActivity to ViewBinding #19442
- chore: convert NoteTypeFieldEditor to ViewBinding #19440
- chore: convert PermissionsActivity to ViewBinding #20187
- chore: convert ManageNotetypes to ViewBinding #19439
- chore: convert CardBrowser to ViewBinding #19429
- chore: convert StudyOptionsFragment to ViewBinding David Allison 10/09/2025, 21:12
- chore: convert StudyOptionsActivity to ViewBinding #19428
- chore: convert DeckPicker to ViewBinding #19420
- chore: convert DrawingActivity to ViewBinding David Allison 10/09/2025, 18:57
Implement View Binding
Advantages of using it over findViewById
Null safety – Properties in the generated class are non-null. In the case of multiple layout versions, e.g. layout file for different screen orientation or size, if some configuration contains an id that is not present in others, the generated property will be nullable.
Type safety – Binding properties will be correctly typed, even with custom views.
Describe the solution you'd like
I will try to implement ViewiBinding for all activities and fragments.
Describe alternatives you've considered
This issue can be marked as good first issue so it will be helpful for new contributors. I will make a readme for this issue which have all the information about how to implement viewBinding for activities and fragments .
Additional context
Advantages
Interoperability – Generated classes are in Java and are optimized for Kotlin-Java interoperability.
Injection capability – Generated class can be injected in activity or fragment.
Speed – There are no impacts on build speed, as it doesn’t use an annotation processor. After the first build with View Binding is enabled, it will dynamically generate new properties. And if you add new view elements to your XML, there is no need to rebuild every time