我是一个初学者在使用Android工作室和Kotlin,我从来没有学过任何编程语言,所以我的问题可能有一个简单的方法来解决。但搜索stackoverflow,其他编程网站,youtube等没有给予我的答案,我需要(也许有一个,我没有理解它的正确方式).
所以我想做的解释很简单:我有几个片段(使用导航组件),其中显示了来自某些get请求的不同数据。有一个登录片段,其中有两个edittext和一个保存按钮。在第一个edittext中,用户必须插入一个url,它应该是get请求的基本url。那么second-edittext中的文本应该是自定义标题的一部分。当单击保存-按钮,第一个GET请求应该开始,通过第一个GET请求,用户获得一个令牌,这也将被实现为下一个请求的报头。最后,edit-texts的2个值也应该被保存在另一个片段的列表视图中(用户可以添加他想要的任意多个不同的edittext 1和edittext 2的组合)。然后,他也可以从列表视图片段开始请求。
所以我的主要问题是如何将edittext的值传递给get请求。一种可能性是在片段中启动请求,使用拦截器添加edittext 2-header和url作为基url。我还没有尝试过,所以我也不知道这样做是否可行。我读过很多文章,这不是做这些事情的方法。特别是当我想使用Mvvm模式时。因此,问题是,如何将edittext传递给视图模型,传递给存储库,以进行更新。
我读到了有关动态头的改型与@头与一个关键字和相关的值,什么看起来像我所需要的,但我如何指定的值,使值始终是插入的文本(在edittext 2中)?对于url来说,这是类似的,我确信有一种相对简单的方法来处理用于请求的base_url,但是我的问题是不变的。。如何通过edittext来改造。
使用共享偏好、数据绑定或类似的东西会有帮助吗?
我希望有人能给予我一个提示,告诉我如何管理所有这些事情。也许我错过了一些明显的东西。
非常感谢:-)
1条答案
按热度按时间bmvo0sr51#
听起来您似乎想将EditText中的值用作Retrofit请求的动态值。实现此目的的一种方法是使用ViewModel中的LiveData对象存储EditText中的值。然后,在存储库中,您可以使用这些LiveData值构建Retrofit请求。
下面是一个示例,说明如何做到这一点:
在Fragment中,用户在EditTexts中输入值,您可以在ViewModel中的LiveData对象上使用observe()方法,以便在用户更改值时更新这些值。例如:
在ViewModel中,您可以公开保存EditText值的LiveData对象。例如:
在存储库中,您可以使用ViewModel中的LiveData值构建Retrofit请求。例如:
在服务接口中,可以使用@Header注解指定应该动态传递标头值。例如: