Kotlin 如何在MVVM中更新实时数据
我希望使用EditText从用户处获取输入,并将其传递给服务器,并向用户显示响应。我只是在没有任何架构的情况下完成这项工作,但我想在MVVM中实现它。 这是我的存储库代码:Kotlin 如何在MVVM中更新实时数据,kotlin,android-livedata,android-mvvm,Kotlin,Android Livedata,Android Mvvm,我希望使用EditText从用户处获取输入,并将其传递给服务器,并向用户显示响应。我只是在没有任何架构的情况下完成这项工作,但我想在MVVM中实现它。 这是我的存储库代码: class Repository { fun getData(context: Context, word: String): LiveData<String> { val result = MutableLiveData<String>() val re
class Repository {
fun getData(context: Context, word: String): LiveData<String> {
val result = MutableLiveData<String>()
val request = object : StringRequest(
Method.POST,
"https://jsonplaceholder.typicode.com/posts",
Response.Listener {
result.value = it.toString()
},
Response.ErrorListener {
result.value = it.toString()
})
{
@Throws(AuthFailureError::class)
override fun getParams(): MutableMap<String, String> {
val params = HashMap<String, String>()
params["word"] = word
return params
}
}
val queue = Volley.newRequestQueue(context)
queue.add(request)
return result
}
}
我的版面有一个EditText,我想获取用户输入并将其传递给服务器,我应该如何做?这里是我在projet中如何做的 您可能可以使用android注释。 这将要求您放置一些依赖项,可能会稍微更改类,但是您需要将Viewmodel与存储库链接,然后必须对变量的setter进行编程,通过使类从BaseObservable继承来执行notifyChange()。然后,在xml中,如果您正确地执行了以下操作,您应该能够执行类似文本的操作:“@={model.variable}”,并且它应该同时进行更新 有点难解释或者向我表示抱歉,但我会研究带有@DataBinding、@DataBound:BaseObservable的Android注释 希望能对你有所帮助
class ViewModel(application: Application) : AndroidViewModel(application) {
fun getData(word: String): LiveData<String> {
val repository = Repository()
return repository.getData(getApplication(), word)
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val model = ViewModelProviders.of(this).get(ViewModel::class.java)
model.getData("test").observe(this, Observer {
Log.i("Log", "activity $it")
})
}
}