๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Study/Android

[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] ํ”„๋กœ์ ํŠธ - RecyclerView(๋ฆฌ์‚ฌ์ดํ˜๋Ÿฌ๋ทฐ)๋ฅผ ์ด์šฉํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ ์ „ํ™˜

2023.7.29

 

1. ์ค€๋น„

- ์ด์ „ ๊ฒŒ์‹œ๋ฌผ(https://hibread.tistory.com/75)์˜ ์—ฐ์žฅ์„ ์œผ๋กœ ์ฑ… ์ •๋ณด๋ฅผ ๋ฐ›์•„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๋ฆฌ์‚ฌ์ดํ˜๋Ÿฌ๋ทฐ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ฑ… ์ •๋ณด๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.

- ์ด์ „์— ์‚ฌ์šฉํ•œ ํŒŒ์ผ: BookAdapter.kt

- activity_second.xml, SecondActivity.kt

 

 

2. xml ์ž‘์„ฑ

- activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".SecondActivity">
<ImageView
android:id="@+id/imgView"
android:layout_width="120dp"
android:layout_height="120dp"
android:background="#000000"/>
<TextView
android:id="@+id/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์ฑ…์ œ๋ชฉ"/>
<TextView
android:id="@+id/textAuthor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์ €์ž"/>
<TextView
android:id="@+id/textPulisher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์ถœํŒ์‚ฌ"/>
<TextView
android:id="@+id/textPubDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์ถœ๊ฐ„์ผ"/>
<TextView
android:id="@+id/textStory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์ค„๊ฑฐ๋ฆฌ"/>
</LinearLayout>

 

 

3. BookAdapter.kt ์ฝ”๋“œ ์ถ”๊ฐ€

- ๋ฆฌ์‚ฌ์ดํ˜๋Ÿฌ๋ทฐ์˜ ์•„์ดํ…œ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ๊ทธ ์•„์ดํ…œ์˜ ์ •๋ณด์™€ ํ•จ๊ป˜ ์•กํ‹ฐ๋น„ํ‹ฐ ์ด๋™

import android.content.Intent
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
class BookAdapter(private var bookList: List<NaverBookItem>) : RecyclerView.Adapter<BookAdapter.BookViewHolder>() {
...
override fun onBindViewHolder(holder: BookViewHolder, position: Int) { // ์‹ค์ œ ํ™”๋ฉด์— ๋ฐ์ดํ„ฐ์™€ ๋ ˆ์ด์•„์›ƒ์„ ์—ฐ๊ฒฐ
val book = bookList[position]
holder.bind(book)
// ์•„์ดํ…œ ํด๋ฆญ ์ด๋ฒคํŠธ
holder.itemView.setOnClickListener {
val intent = Intent(holder.itemView.context, SecondActivity::class.java)
intent.putExtra("bookTitle", bookList[position].title)
intent.putExtra("bookAuthor", bookList[position].author)
intent.putExtra("bookPublisher", bookList[position].publisher)
intent.putExtra("bookPubDate", bookList[position].pubdate)
intent.putExtra("bookImgUrl", bookList[position].image)
intent.putExtra("bookStory", bookList[position].description)
ContextCompat.startActivity(holder.itemView.context, intent, null)
}
}
...
}

 

 

4. SecondActivity.kt ์ž‘์„ฑ

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView
import com.bumptech.glide.Glide
class SecondActivity : AppCompatActivity() {
lateinit var imgView: ImageView
lateinit var textTitle: TextView
lateinit var textAuthor: TextView
lateinit var textPublisher: TextView
lateinit var textPubDate: TextView
lateinit var textStory: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
imgView = findViewById(R.id.imgView)
textTitle = findViewById(R.id.textTitle)
textAuthor = findViewById(R.id.textAuthor)
textPublisher = findViewById(R.id.textPulisher)
textPubDate = findViewById(R.id.textPubDate)
textStory = findViewById(R.id.textStory)
val title = intent.getStringExtra("bookTitle")
val author = intent.getStringExtra("bookAuthor")
val publisher = intent.getStringExtra("bookPubliser")
val pubDate = intent.getStringExtra("bookPubDate")
val imgUrl = intent.getStringExtra("bookImgUrl")
val story = intent.getStringExtra("bookStory")
Glide.with(this).load(imgUrl).into(imgView)
textTitle.text = title
textAuthor.text = author
textPublisher.text = publisher
textPubDate.text = pubDate
textStory.text = story
}
}

 

 

๊ฒฐ๊ณผ