Coverage Summary for Class: BaseRcvDataBindingViewHolder (kr.open.library.simple_ui.xml.ui.adapter.viewholder)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| BaseRcvDataBindingViewHolder |
100%
(1/1)
|
100%
(3/3)
|
0%
(0/2)
|
100%
(6/6)
|
84.6%
(33/39)
|
package kr.open.library.simple_ui.xml.ui.adapter.viewholder
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
/**
* Base RecyclerView ViewHolder with DataBinding support.<br>
* Inflates XML once and exposes a lazily bound `binding` instance.<br><br>
* DataBinding을 지원하는 기본 RecyclerView ViewHolder입니다.<br>
* XML을 한 번 인플레이트하고 지연 초기화된 `binding` 인스턴스를 제공합니다.<br>
*
* @param BINDING DataBinding type generated from item layout.<br><br>
* 아이템 레이아웃에서 생성된 DataBinding 타입입니다.<br>
* @param xmlRes Item layout resource ID.<br><br>
* 아이템 레이아웃 리소스 ID입니다.<br>
* @param parent Parent ViewGroup used for inflation context.<br><br>
* 인플레이트 컨텍스트로 사용하는 부모 ViewGroup입니다.<br>
* @param attachToRoot Whether to attach inflated view to parent immediately.<br><br>
* 인플레이트한 뷰를 부모에 즉시 부착할지 여부입니다.<br>
*/
public open class BaseRcvDataBindingViewHolder<BINDING : ViewDataBinding>(
@LayoutRes xmlRes: Int,
parent: ViewGroup,
attachToRoot: Boolean = false,
) : RootViewHolder(
LayoutInflater.from(parent.context).inflate(xmlRes, parent, attachToRoot),
) {
/**
* Lazily initialized DataBinding instance bound to `itemView`.<br><br>
* `itemView`에 바인딩된 지연 초기화 DataBinding 인스턴스입니다.<br>
*
* Throws `IllegalStateException` when binding cannot be created.<br><br>
* 바인딩 생성에 실패하면 `IllegalStateException`을 발생시킵니다.<br>
*/
public val binding: BINDING by lazy {
DataBindingUtil.bind<BINDING>(itemView) ?: throw IllegalStateException("DataBinding bind failed: binding is null")
}
/**
* Executes pending bindings for DataBinding.<br><br>
* DataBinding의 pending 바인딩을 실행합니다.<br>
*/
protected fun executePendingBindings() {
binding.executePendingBindings()
}
}