Skip to content

Instantly share code, notes, and snippets.

View demonar's full-sized avatar
😄
(¯`•._.•«<ÐêMøN>»•._.•´¯) -> Building mobile apps with Kotlin and Swift

Alejandro Moya demonar

😄
(¯`•._.•«<ÐêMøN>»•._.•´¯) -> Building mobile apps with Kotlin and Swift
View GitHub Profile
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.demon.android.demo.activity.SearchActivity">
<include layout="@layout/toolbar" />
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/searchView"
android:icon="@drawable/ic_search_black_24dp"
android:title="Search"
app:showAsAction="always"
app:actionViewClass="androidx.appcompat.widget.SearchView" />
</menu>
class SeachActivity : AppCompatActivity() {
lateinit var searchView: SearchView
private val vm: SearchViewModel by viewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.search_activity_layout)
recyclerView.adapter = vm.adapter
class SearchViewModel(): ViewModel(), KoinComponent {
val datasource: DataSource by inject()
val adapter: SearchRecyclerViewAdapter by inject {
parametersOf(datasource.elements)
}
var searchOrder = SortOrder.ASCENDING
set(value) {
data class DesiredObject(var text: String)
class DataSource() {
var elements: MutableArrayList<DesiredObject>
}
class SearchRecyclerViewAdapter(var elements: ArrayList<DesiredObject>):
RecyclerView.Adapter<SearchRecyclerViewAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val layout = LayoutInflater.from(parent.context)
.inflate(R.layout.list_item, parent, false)
return ViewHolder(layout)
}
override fun getItemCount(): Int {
val searchViewActivityModule = module {
viewModel { SearchViewModel() }
factory { DataSource() }
factory { (elements: ArrayList<DesiredObject>) -> SearchRecyclerViewAdapter(elements) }
}
class DemoApp : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
androidContext(this@DemoApp)
modules(searchViewActivityModule)
}
[versions]
library-group = "com.my.library"
library-version = "0.0.1"
android = "8.0.2"
kotlin = "1.8.20"
kover = "0.6.1"
ksp = "1.8.20-1.0.11"
[libraries]
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-common", version.ref = "kotlin" }
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
versionCatalogs {
create("commonlibs") {
from(files("./catalogs/common.versions.toml"))
}
}