当前位置: 首页 > 知识库问答 >
问题:

在Android应用程序的改进实现中访问kotlin类自动生成的getter方法

张积厚
2023-03-14

我正在尝试使用kotlin语言在Android应用程序中实现改造库,但我尝试使用kotlin的自动生成的getter功能获取我的MovieResponse类的值。

这是MovieReader类:

class MovieResponse {

    @SerializedName("page")
    private var page : Int? = null

    @SerializedName("results")
    private var results : List<Movie>? = null

    @SerializedName("total_results")
    private var totalResults : Int? = null

    @SerializedName("total_pages")
    private var totalPages : Int? = null

    constructor(page: Int?, results: List<Movie>?, totalResults: Int?, totalPages: Int?) {
        this.page = page
        this.results = results
        this.totalResults = totalResults
        this.totalPages = totalPages
    }


}

这是我的android MainActivity类:

class MainActivity : AppCompatActivity() {

    private val TAG : String = MainActivity::class.java.simpleName
    val BASE_URL : String = "http://api.themoviedb.org/3/"
    private var retrofit : Retrofit? = null
    private var recyclerView : RecyclerView? = null
    private var API_KEY : String = "166873e095bdb281691220d5ad12610c"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // setup the layout manager
        recycler_view.setHasFixedSize(true)
        recycler_view.layoutManager = LinearLayoutManager(this)

        // get the data
        connectAndGetData()

    }

    /**
     * This method creates an instance of Retrofit
     * and set the base url
     */
    private fun connectAndGetData() {
        if (retrofit == null) {
            retrofit = Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
        }

        val movieApiService = retrofit!!.create(MovieApiService::class.java)

        val call : Call<MovieResponse> = movieApiService!!.getTopRatedMovies(API_KEY)
        call.enqueue(object : Callback<MovieResponse> {
            override fun onFailure(call: Call<MovieResponse>, t: Throwable) {
            }

            override fun onResponse(call: Call<MovieResponse>, response: Response<MovieResponse>) {
                val movies : List<Movie> = response.body() #<-- stuck here
                recyclerView!!.adapter = MoviesAdapter(movies, R.layout.list_item_movie, applicationContext)
                Log.d(TAG, "Number of movies received: " + movies.size)
            }
        })


    }
}

我无法得到这个

@SerializedName("results")
        private var results : List<Movie>? = null

从这里:

val movies : List<Movie> = response.body()

在正常的java中,它会是

val movies : List<Movie> = response.body().getResults()

但在科特林,我似乎无法实现这一点。

我对“电影数据库API”的回应:

{
    "page": 1,
    "total_results": 7444,
    "total_pages": 373,
    "results": [
        {
            "vote_count": 2080,
            "id": 19404,
            "video": false,
            "vote_average": 9,
            "title": "Dilwale Dulhania Le Jayenge",
            "popularity": 16.5,
            "poster_path": "\/uC6TTUhPpQCmgldGyYveKRAu8JN.jpg",
            "original_language": "hi",
            "original_title": "दिलवाले दुल्हनिया ले जायेंगे",
            "genre_ids": [
                35,
                18,
                10749
            ],
            "backdrop_path": "\/mMaxGuQKuH4WUHBwUNhJOetDYE9.jpg",
            "adult": false,
            "overview": "Raj is a rich, carefree, happy-go-lucky second generation NRI. Simran is the daughter of Chaudhary Baldev Singh, who in spite of being an NRI is very strict about adherence to Indian values. Simran has left for India to be married to her childhood fiancé. Raj leaves for India with a mission at his hands, to claim his lady love under the noses of her whole family. Thus begins a saga.",
            "release_date": "1995-10-20"
        },
        {...}
     ]
}

共有1个答案

楚涵润
2023-03-14

您的变量MoviReport类中似乎是私有的,因此您无法从类外部访问它。检查这个。

 类似资料:
  • 考虑java中的此类(数据不是私有的或公共的): 我将这个类转换为kotlin 反编译后的代码是这样的: 在kotlin类中,dataPart2调用数据getter(检查反编译代码中的第2行),但我需要访问数据的实际值而不是getter,在kotlin中是否可以访问字段而不调用getter?我不想更改getter或方法名称。

  • 在Android Studio中有自动生成给定类中的getter和setter的快捷方式吗?

  • 我还想在自动生成getter和setter时生成注释 Android Studio: 我想要:

  • 我有一个用Kotlin(android studio)编写的android应用程序和用React Native编写的应用程序的UI。我的问题是这些能联系在一起吗?如果是,怎么做?还有,你们能发布一些我可以通过的链接吗。 附注:我对react Native一无所知。

  • 问题内容: 当我在Eclipse中为名称类似的类字段使用自动生成器进行getter / setter时, 将产生以下内容: 该字段的首字母将不会大写!但是我使用的一些框架可以与反射一起使用,并通过使用“ get” +大写的字段名称来调用getter / setter。 我可以在eclipse中更改getter / setter的代码生成以生成类似和的输出吗? 问题答案: 1)我认为不可能,类似的讨

  • 如何使用firebase作为后端服务生成一个自定义的自动增量id有点困惑。