【问题标题】:how Live data will be update in MVVM如何在 MVVM 中更新实时数据
【发布时间】: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


    【解决方案1】:

    这是我在项目中的做法。

    您可能可以使用 android 注释。 它会要求您放置一些依赖项,并且可能会稍微更改类,但随后您要将 Viewmodel 与存储库链接,然后您必须对变量的设置器进行编程,以通过使类继承来执行 notifyChange() BaseObservable。然后在 xml 中,如果你做对了,你应该能够做类似 text:"@={model.variable}" 的事情,并且它应该同时更新。

    有点难解释或向我道歉,但我会用@DataBinding、@DataBound :BaseObservable 来研究 Android 注释 https://github.com/androidannotations/androidannotations/wiki/Data-binding-support

    希望能有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2018-06-27
      • 2021-11-01
      相关资源
      最近更新 更多