Conflicts:
	app/build.gradle
	app/src/main/java/com/navinfo/omqs/OMQSApplication.kt
	app/src/main/java/com/navinfo/omqs/ui/MainActivity.kt
	app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt
	app/src/main/res/layout/fragment_offline_map_state_list.xml
	app/src/main/res/layout/map_view.xml
	collect-library/build.gradle
This commit is contained in:
qiji4215
2023-04-19 15:52:28 +08:00
90 changed files with 2972 additions and 812 deletions

View File

@@ -0,0 +1,5 @@
package com.navinfo.omqs.ui.other
interface AdapterItemClickListener {
fun onItemClick(position: Int)
}

View File

@@ -5,6 +5,7 @@ import android.view.View.OnClickListener
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView
import com.navinfo.omqs.R
/**
* RecyclerView 适配器基础类
@@ -26,32 +27,38 @@ abstract class BaseRecyclerViewAdapter<T>(var data: List<T> = listOf()) :
// )
// }
abstract fun getItemViewRes(position: Int): Int
override fun getItemViewType(position: Int): Int {
return getItemViewRes(position)
}
override fun getItemCount(): Int {
return data.size
}
fun refreshData(newData: List<T>) {
this.data = newData
this.notifyDataSetChanged()
}
override fun onViewAttachedToWindow(holder: BaseViewHolder) {
super.onViewAttachedToWindow(holder)
holder.onStart()
}
override fun onViewDetachedFromWindow(holder: BaseViewHolder) {
super.onViewDetachedFromWindow(holder)
holder.apply {
onStop()
}
}
//
// override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
// this.recyclerView = recyclerView
// super.onAttachedToRecyclerView(recyclerView)
// this.recyclerView = recyclerView
// override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
open fun refreshData(newData: List<T>) {
this.data = newData
this.notifyDataSetChanged()
}
// }
//
// override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) {

View File

@@ -0,0 +1,107 @@
package com.navinfo.omqs.ui.other
import androidx.annotation.MainThread
import androidx.fragment.app.Fragment
import androidx.fragment.app.createViewModelLazy
import androidx.lifecycle.*
import androidx.lifecycle.viewmodel.CreationExtras
/**
* 用来共享的viewModel
*/
val vMStores = HashMap<String, ViewModelStoreOwner>()
@MainThread
inline fun <reified VM : ViewModel> Fragment.shareViewModels(
scopeName: String,
noinline ownerProducer: () -> ViewModelStoreOwner = { this },
noinline factoryProducer: (() -> ViewModelProvider.Factory)? = null
): Lazy<VM> {
val owner by lazy(LazyThreadSafetyMode.NONE) { ownerProducer() }
val store: ViewModelStoreOwner
if (vMStores.keys.contains(scopeName)) {
store = vMStores[scopeName]!!
} else {
vMStores[scopeName] = owner
store = owner
this.let { fragment ->
fragment.lifecycle.addObserver(object : LifecycleEventObserver {
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
if (event == Lifecycle.Event.ON_DESTROY) {
fragment.lifecycle.removeObserver(this)
store.viewModelStore.clear()
vMStores.remove(scopeName)
}
}
})
}
}
// store.register(this)
return createViewModelLazy(
VM::class,
{ store.viewModelStore },
{
(store as? HasDefaultViewModelProviderFactory)?.defaultViewModelCreationExtras
?: CreationExtras.Empty
},
factoryProducer ?: {
(store as? HasDefaultViewModelProviderFactory)?.defaultViewModelProviderFactory
?: defaultViewModelProviderFactory
})
}
//
//@MainThread
//inline fun <reified VM : ViewModel> LifecycleOwner.shareViewModels(
// scopeName: String,
// factory: ViewModelProvider.Factory? = null
//): Lazy<VM> {
// val store: VMStore
// if (vMStores.keys.contains(scopeName)) {
// store = vMStores[scopeName]!!
// } else {
// store = VMStore()
// vMStores[scopeName] = store
// }
// store.register(this)
// return ViewModelLazy(VM::class,
// { store.viewModelStore },
// { factory ?: MyViewModelFactory() })
//}
class MyViewModelFactory(
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return modelClass.getConstructor().newInstance()
}
}
class VMStore(val owner: ViewModelStoreOwner) {
// private val bindTargets = ArrayList<LifecycleOwner>()
// fun register(host: LifecycleOwner) {
// if (!bindTargets.contains(host)) {
// bindTargets.add(host)
// host.lifecycle.addObserver(object : LifecycleEventObserver {
// override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
// if (event == Lifecycle.Event.ON_DESTROY) {
// host.lifecycle.removeObserver(this)
// bindTargets.remove(host)
// if (bindTargets.isEmpty()) {//如果当前商店没有关联对象,则释放资源
// vMStores.entries.find { it.value == this@VMStore }?.also {
// owner.viewModelStore.clear()
// vMStores.remove(it.key)
// }
// }
// }
// }
// })
// }
// }
}