'How to use generic data type as parameter in data binding?

object BindingAdapter {
   @BindingAdapter("app:displayDate")
        @JvmStatic
        fun startDate(appCompatTextView: AppCompatTextView, item: SpecialOfferItem) {
            try {
                var strDate = ""
                strDate =
                    DateUtils.utcToCurrentTimeZone(item.startDate)
                appCompatTextView.text = strDate
            } catch (e: ParseException) {
                e.printStackTrace()
                appCompatTextView.text = ""
            }
        }

}

How to use SpecialOfferItem as a generic parameter. i want to make this function for multiple model class



Solution 1:[1]

class SomethingClass<T : BaseModel>{ 
@BindingAdapter("app:startDate")
    @JvmStatic
    fun startDate(appCompatTextView: AppCompatTextView, item: T) {
        try {
            var strDate = ""
            strDate =
                DateUtils.utcToCurrentTimeZone(item.startDate)
            appCompatTextView.text = strDate
        } catch (e: ParseException) {
            e.printStackTrace()
            appCompatTextView.text = ""
        }
    }
}

let all your models and classes you want to pass in the method to inherit from the BaseModel which contains the attributes you want to use.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Anas Altarazi