目录
一、前言
本文提供了一个基类,通过继承基类和传入泛型类型就可以实现创建ViewModel和绑定ViewDataBinding的工作。
二、ViewDataBinding
2.1 ViewDataBindingHelper
object ViewDataBindingHelper {
/**
* 获取指定的 [viewBindingClass] 实例
* @param viewBindingClass Class<T> ViewDataBinding的子类
* @param context Context 上下文
* @param parent ViewGroup 父视图容器
* @return T?
*/
fun <T : ViewDataBinding> inflateVDB(
viewBindingClass: Class<T>,
context: Context,
parent: ViewGroup,
): T? {
try {
val inflate: Method? = viewBindingClass?.getDeclaredMethod("inflate",
LayoutInflater::class.java,
ViewGroup::class.java,
Boolean::class.java)
return inflate?.invoke(null,
LayoutInflater.from(context),
parent,
false) as? T
} catch (e: Exception) {
e.printStackTrace()
}
return null
}
/**
* 获取[kClass]的泛型参数中的ViewDataBinding子类实例
* @param context Context
* @param kClass KClass<*>
* @return ViewDa