【发布时间】:2020-05-25 04:54:33
【问题描述】:
我想使用 EditText 从用户那里获取输入并将其传递给服务器并向用户显示响应。我只是在没有任何架构的情况下这样做,但我想在 MVVM 中实现它。 这是我的存储库代码:
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
}
}
这些是我的视图模型代码:
class ViewModel(application: Application) : AndroidViewModel(application) {
fun getData(word: String): LiveData<String> {
val repository = Repository()
return repository.getData(getApplication(), word)
}
}
而我的 mainActivity 会是这样的:
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")
})
}
}
我的布局有一个 EditText,我想获取用户输入并将其传递给服务器,我应该怎么做?
【问题讨论】:
标签: kotlin android-livedata android-mvvm