增加数据渲染

This commit is contained in:
squallzhjch
2023-04-19 15:40:00 +08:00
parent 88326d3247
commit a9def220ce
43 changed files with 1760 additions and 482 deletions

View File

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

View File

@@ -37,27 +37,28 @@ abstract class BaseRecyclerViewAdapter<T>(var data: List<T> = listOf()) :
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)
// }
// }
// }
// }
// })
// }
// }
}