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 參數。調用視圖模型函數,該函數返回實時數據并在視圖類中觀察該數據。
當實時數據中出現任何更改時,您將在視圖類中獲取數據。
以上是一個簡單的做法,但可以通過根據您的要求使響應通用來使其變得更好。
添加回答
舉報