/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // This is example code for the 'Simplified Example' section of // /docs/architecture-overview.md class ContactsView( private val container: ViewGroup, private val interactor: ContactsInteractor ) { val view: View = LayoutInflater.from(container.context) .inflate(R.layout.contact_list, container, true) private val contactAdapter: ContactAdapter init { // Setup view constraints and anything else that will not change as data updates view.select_theme_orange.setOnClickListener { interactor.onThemeSelected(Theme.ORANGE) } view.select_theme_dark.setOnClickListner { interactor.onThemeSelected(Theme.DARK) } // The RecyclerView.Adapter is passed the interactor, and will call it from its own listeners contactAdapter = ContactAdapter(view.contactRoot, interactor) view.contact_recycler.apply { adapter = contactAdapter } } fun update(state: ContactsState) { view.toolbar.setColor(ContextCompat.getColor(this, R.color.state.toolbarColor)) contactAdapter.update(state) } }