使用翻新获取数据并插入SQLite数据库

时间:2019-04-11 07:00:30

标签: android kotlin android-sqlite retrofit2

我刚刚开始与Kotlin合作。我已经使用Retrofit从API成功获取了数据。我必须在SQLite中插入该数据。但是我无法从响应中获取特定数据。

这是我的代码:

apiInterface.enqueue( object : Callback<List<Movie>> {
        override fun onResponse(call: Call<List<Movie>>?, response: Response<List<Movie>>?) {

            if(response?.body() != null)
                recyclerAdapter.setMovieListItems(response.body()!!)

            response?.let {
                for (i:Int in response.body()!!) {
                    recyclerAdapter.setMovieListItems(response.body()!!)
                    val myMovieList = response.body()

                    val myMovie = myMovieList!!.get(i)


                    var movie = MovieDatabase(myMovie.title, myMovie.image)
                    db.insertMovieData(movie)
                }
            }

        }


        override fun onFailure(call: Call<List<Movie>>?, t: Throwable?) {

        }
    })
}

这是我的插入方法:

fun insertMovieData(movie: MovieDatabase) {
    val db = this.writableDatabase
    var cv = ContentValues()
    cv.put(COL_FIRST_NAME, movie.name)
    cv.put(COL_LAST_NAME, movie.image)

    var result = db.insert(TABLE_NAME_MOVIE, null, cv)

    if (result == -1.toLong())
        Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show()
    else
        Toast.makeText(context, "Success", Toast.LENGTH_SHORT).show()
}

1 个答案:

答案 0 :(得分:1)

如果成功,则从响应正文中退回List<Movie>,只需将响应放入List<Movie> myList

List<Movie> myMovieList = response.body();

然后循环遍历以获得所需的值。

Movie myMovie = myList.get(0); //To get first Movie in list and so on

然后按照您的Movie类,使用getter方法获取电影的更多详细信息;例如:

String imgURL = myMovie.getImage();
String movieName = myMovie.getTitle();

从Room Persistence Library中构建一个SQLite数据库(比直接使用SQLite数据库更简单),然后在其中添加电影信息。阅读-Save data in a local database using Room。或者,继续您的SQLite数据库,并调用各自的insert方法,并使用在imgURL和movieName中获得的数据查询已构建的数据。

您还可以在数据库处理程序类中有一个特殊的方法,该方法可以一次性获取整个myMovieList并对其进行迭代,将值一个接一个地插入数据库。

我的代码示例使用Java,但是您应该能够编写与Kotlin等效的示例。

这是Room Persistence Library上的official documentation