【发布时间】:2018-07-01 17:36:25
【问题描述】:
我是一名初级 Android 开发人员,试图通过构建电影数据库应用来学习移动开发。我正在用 Kotlin 编写我的应用程序,并使用 Retrofit 进行网络调用。我不知道如何以及在何处调用以使用来自 tmdb API 的电影海报填充 Recyclerview。
这是我的界面:
interface APImovies {
fun getMovies()
}
这是我的改造服务器对象的主要活动:
class MainActivity() : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView = findViewById<RecyclerView>(R.id.recycler_view);
recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
recyclerView.layoutManager = GridLayoutManager(this, 3);
recyclerView.adapter = PosterAdapter()
}
object RetrofitServer{
val client: APImovies by lazy{
val client = OkHttpClient.Builder().build()
val retrofit = Retrofit
.Builder()
.baseUrl("https://api.themoviedb.org/3/movie/550?api_key=")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
retrofit.create(APImovies::class.java)
}
}
}
这是我目前使用占位符图像填充 Recyclerview 的适配器:
class PosterAdapter() : RecyclerView.Adapter<PosterHolder>(){
override fun getItemCount(): Int { return 300}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PosterHolder{
val layoutInflater = LayoutInflater.from(parent.context)
val listItem = layoutInflater.inflate(R.layout.list_item, parent, false)
return PosterHolder(listItem)
}
override fun onBindViewHolder(holder: PosterHolder, position: Int) {
holder.view.movie_poster?.setImageResource(R.mipmap.beauty_and_the_beast_ver3)
holder.view.movie_poster?.scaleType = ImageView.ScaleType.FIT_XY
}
}
class PosterHolder(val view: View) : RecyclerView.ViewHolder(view), View.OnClickListener {
var imageView: ImageView? = null
fun PosterHolder(view: View){ this.imageView = view.findViewById<View>(R.id.movie_poster) as ImageView }
override fun onClick(p0: View?) {}
}
【问题讨论】:
标签: android android-recyclerview kotlin retrofit2