3 回答
TA贡献1895条经验 获得超3个赞
你可以从视图模型调用一些公共方法,然后将参数传递给它。就像这样
视图模型
class UserViewmodel: ViewModel() {
fun callApi(userId: String) : Any {
// Your method definition
return result
}
}
并在活动/片段中通过视图模型实例调用方法
class UserActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_user)
val viewModel = ViewModelProviders.of(this).get(UserViewmodel::class.java)
val result = viewModel.callApi("userId")
}
}
TA贡献1848条经验 获得超6个赞
使用 Android 架构组件,例如:View Model、LiveData 等。
当使用Android架构组件调用API请求时,我如何尝试实现我的目标如下:
创建一个Repo类,在该类中初始化Retrofit接口(如果使用Retrofit)。创建一个调用所需 API、处理请求响应并返回实时数据的函数。为要通过 URL 传递的参数创建额外的函数。
创建一个View Model类,在该类中,初始化上面的Repo类。创建一个调用 repo 类函数的函数,该函数返回 Live Data,并且该函数也返回 LiveData。为要传递到 Repo 的参数创建额外的函数以添加 URL。
在您的视图类(Activity/Fragment)中,初始化视图模型类并传递所需的 URL 参数。调用视图模型函数,该函数返回实时数据并在视图类中观察该数据。
当实时数据中出现任何更改时,您将在视图类中获取数据。
以上是一个简单的做法,但可以通过根据您的要求使响应通用来使其变得更好。
添加回答
举报