如何在Kotlin中使用翻新时传递URL字符串

时间:2018-10-28 02:06:30

标签: android kotlin retrofit retrofit2

我有一个包含变量的类A。我需要在B类接口文件中传递变量,以便在Kotlin中获得Dynamic输出。如果它是一个常量字符串,那么我可以检索结果,但是我不确定如何动态更改该值。  我在测试中使用了以下代码,但这是静态JSON值。

Class:A
        val intent= Intent(customView.context,ApiMovies::class.java)
        intent.putExtra(MOVIES_TITLE_KEY,Movies?.name)
Class:B
interface ApiMovies {
//   val name= intent.getStringExtra(MOVIES_TITLE_KEY,Movies?.name)

    @GET("get_movie.php?name=DunKirk")
    fun getMovies() : Observable<MovieResponse>
}

Class:C
        val retrofit : Retrofit = Retrofit.Builder()
                    .baseUrl("https://www.imdb.com")

Class:D
class MovieResponse {

    lateinit var data : List<Movie>
}

2 个答案:

答案 0 :(得分:0)

我认为您可以为classB的方法添加一个参数

Class:B interface ApiMovies { 
@GET("get_movie.php")
 fun getMovies(@QueryMap() Map<String, String> info) : Observable<MovieResponse>
 }

在调用您的方法之前,创建一个地图,将k&v添加到map(map.add(“ name”,xxx))中,像getMovies(map)一样调用它,这样就可以了,无需传递变量到classB。

答案 1 :(得分:0)

我如下更改了代码。

Class:A
        val intent= Intent(customView.context,ApiMovies::class.java)
        intent.putExtra(MOVIES_TITLE_KEY,Movies?.name)

 apiMovies.getMovies($intent)
Class:B
interface ApiMovies {

    @GET("get_movie.php")
    fun getMovies(@Query("name") name:String) : Observable<MovieResponse>
}

Class:C
        val retrofit : Retrofit = Retrofit.Builder()
                    .baseUrl("https://www.imdb.com")

Class:D
class MovieResponse {

    lateinit var data : List<Movie>
}