Closed ilatent closed 4 years ago
这个情况我之前没有考虑到,刚想了一下,你可以这么写,将UpdateUiState data设置可为空,并给个默认值null
data class UpdateUiState<T>(
//请求是否成功
var isSuccess: Boolean = true,
//操作的对象
var data: T? = null,
//请求失败的错误信息
var errorMsg: String = ""
)
在使用的时候就可以不用传递一个data值给它了,只要给个泛型就OK
val uistate = UpdateUiState<Int>(isSuccess = false, errorMsg = it.errorMsg)
updateDataState.postValue(uistate)
当然了,data可为空,所以如果操作成功后需要用到这个值,虽然成功后data肯定不为null,但是你还是要处理非空操作,或者直接 !!
我看项目使用livedata更新数据,是在外面有包装了一层ListDataUiState or UpdateUiState。如果是列表还好,如果出现异常,可以使用arrayListOf()设置默认值,但是UpdateUiState如果请求时出现异常,那包装成UpdateUiState对象,data该怎么穿,我尝试设置成data: T?和T: Any都不行,我看项目中data类型全都是Int,可以设置0,我的都是数据类型,不知道该怎么穿,麻烦大佬看一下