Android Studio/ReviewMate
[Android Studio/Kotlin] Adapter사용법
kangchaewon
2023. 12. 6. 01:09
어뎁터 사용 방법 0. recyclerview layout xml작성(사용할 fragment에)
- Adapter클래스 작성(recylerview에 들어갈 xml을 받음)
class MovieAdapter (var movies : List<Movie>) : RecyclerView.Adapter<MovieAdapter.MovieViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
return MovieViewHolder(
ItemMovieBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false // 직접 사용하면 안되기 때문
)
)
}
override fun getItemCount(): Int = movies.size
override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
holder.bind(movies[position])
}
class MovieViewHolder(val binding : ItemMovieBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(movie : Movie) {
// 데이터 대입하는 코드
binding.itemMovieTitle.text = movie.movieTitle
}
}
}
- getItemCount()
- onCreateViewHolder()
- onBindViewHolder
- MovieViewHolder
⇒ 3개의 override 메소드와 1개의 Holder class필요
- 사용할 fragmet에서 데이터를 전달
class FragmentOne : Fragment() {
lateinit var binding : FragmentOneBinding
private val itemList = listOf<Movie>(
// 예시를 위한 가짜 데이터 사용
// ** Movie모델 data class 생성되어 있음
Movie(
1,
"영화1",
"설명",
"poster_path_string", // drawable 리소스의 이름을 사용하면 안됨
"backdrop_path_string", // drawable 리소스의 이름을 사용하면 안됨
6.9f,
"2023-08-01",
435.0f // float일 시 f붙여야 함
),
Movie(
2,
"영화2",
"설명",
"poster_path_string", // drawable 리소스의 이름을 사용하면 안됨
"backdrop_path_string", // drawable 리소스의 이름을 사용하면 안됨
6.9f,
"2023-08-02",
435.0f // float일 시 f붙여야 함
),
Movie(
3,
"영화3",
"설명",
"poster_path_string", // drawable 리소스의 이름을 사용하면 안됨
"backdrop_path_string", // drawable 리소스의 이름을 사용하면 안됨
6.9f,
"2023-08-03",
435.0f // float일 시 f붙여야 함
),
Movie(
4,
"영화4",
"설명",
"poster_path_string", // drawable 리소스의 이름을 사용하면 안됨
"backdrop_path_string", // drawable 리소스의 이름을 사용하면 안됨
6.9f,
"2023-08-04",
435.0f // float일 시 f붙여야 함
)
)
예시를 위해 가짜 데이터 작성
override fun onStart() {
super.onStart()
binding.popularMovies.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
binding.popularMovies.adapter = MovieAdapter(itemList)
}
여기서!! 좌우 스크롤 지정 방법
⇒ LayoutMangager에 LinearLayoutManager.HORIZONTAL