增加离线地图下载流程

This commit is contained in:
squallzhjch
2023-04-03 10:40:53 +08:00
parent ca1be58db2
commit dcc5f581fb
23 changed files with 705 additions and 178 deletions

View File

@@ -1,6 +1,7 @@
package com.navinfo.omqs.ui.other
import android.view.LayoutInflater
import android.view.View.OnClickListener
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView
@@ -10,23 +11,51 @@ import androidx.recyclerview.widget.RecyclerView
*/
abstract class BaseRecyclerViewAdapter<T>(var data: List<T> = listOf()) :
RecyclerView.Adapter<BaseViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
return BaseViewHolder(
DataBindingUtil.inflate(
LayoutInflater.from(parent.context),
viewType,
parent,
false
)
)
}
// private var recyclerView: RecyclerView? = null
// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
//
//
//
// return BaseViewHolder(
// DataBindingUtil.inflate(
// LayoutInflater.from(parent.context),
// viewType,
// parent,
// false
// )
// )
// }
override fun getItemCount(): Int {
return data.size
}
fun refreshData(newData:List<T>){
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) {
// super.onAttachedToRecyclerView(recyclerView)
// this.recyclerView = recyclerView
// }
//
// override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) {
// super.onDetachedFromRecyclerView(recyclerView)
// this.recyclerView = null
// }
}

View File

@@ -1,11 +1,54 @@
package com.navinfo.omqs.ui.other
import androidx.databinding.ViewDataBinding
import android.view.View
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import androidx.recyclerview.widget.RecyclerView
import androidx.viewbinding.ViewBinding
/**
* dataBinding viewHolder 基类
* LifecycleRegistry 这是一个生命周期注册器,继承自 LifecycleLifecycleOwner 通过这个类来分发生命周期事件,并在 getLifecycle() 中返回
*/
open class BaseViewHolder(var dataBinding: ViewDataBinding) :
RecyclerView.ViewHolder(dataBinding.root) {
open class BaseViewHolder(val viewBinding: ViewBinding) :
RecyclerView.ViewHolder(viewBinding.root), LifecycleOwner {
private val lifecycleRegistry = LifecycleRegistry(this)
init {
// dataBinding.lifecycleOwner = this
lifecycleRegistry.currentState = Lifecycle.State.INITIALIZED
lifecycleRegistry.currentState = Lifecycle.State.CREATED
itemView.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
// View onDetached 的时候回调 onDestroy()
override fun onViewDetachedFromWindow(v: View) {
itemView.removeOnAttachStateChangeListener(this)
onDestroy()
}
// View onAttached 的时候回调 onCreate()
override fun onViewAttachedToWindow(v: View) {
onStart()
}
})
}
fun onStart() {
lifecycleRegistry.currentState = Lifecycle.State.STARTED //
lifecycleRegistry.currentState = Lifecycle.State.RESUMED // ON_RESUME EVENT
}
fun onStop() {
lifecycleRegistry.currentState = Lifecycle.State.STARTED //
lifecycleRegistry.currentState = Lifecycle.State.CREATED // ON_STOP EVENT
}
fun onDestroy() {
lifecycleRegistry.currentState = Lifecycle.State.DESTROYED /// ON_DESTROY EVENT
}
override fun getLifecycle(): Lifecycle {
return lifecycleRegistry
}
}