๋ฆฌ์คํธ๋ทฐ,, ๋ฆฌ์คํธ๋ทฐ,,,,, ๋ฆฌ์คํธ๋ธ ใ ใดใ ๋ฏธใ ;์;!!!
www.youtube.com/watch?v=ao0Iqfhy0oo&list=PLC51MBz7PMywN2GJ53aF0UO5fnHGjW35a&index=5
1. ๊ฐ๋จํ์ง๋ง ์ ์ฝ์ด ์๋ 1๋ฒ๋ฐฉ๋ฒ (์์๋ง๋์)
๋ฐฐ์ด๋ด์ฉ์,, ์ต๊ทผ ๋ณธ ์นํฐ ์ฃผ์ธ๊ณต๋ค ์ด๋ฆ..
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sub)
val item = arrayOf("์ ํฉ์ง","์์ฑ์ฐ","๋ฏธ์","๊น์ฌ๋ฅ")
//context : ํ ์ํฐ๋นํฐ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์.
listView.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, item)
}
2. ์ธ๋งํ์ง๋ง ๋ณต์กํ 2๋ฒ๋ฐฉ๋ฒ
1) ListView ๋ง๋ค๊ธฐ
: ๋ฆฌ์คํธ๋ทฐ๋ฅผ xml ํ์ผ์ ๋ง๋ ๋ค
2) ๋ชจ๋ธ๊ฐ์ฒด ๋ง๋ค๊ธฐ
: ์ฝํ๋ฆฐํ์ผ(.kt) ์์ฑ
//ํด๋์ค ๋ชจ๋ธ ๊ฐ์ฒด
class Content (val ๋ณ์1: Int, val ๋ณ์2: String)
๋ณ์๋ ๋น์ฐํ ๋ง์๋ ๋จ
์ฌ๊ธฐ์๋ Content ๋ผ๋ ์ด๋ฆ์ ์ฝํ๋ฆฐ ํ์ผ์ ๋ง๋ค๊ณ ํด๋์ค ์ด๋ฆ๋ Content๋ก ํด๋จ๋ค.
3) ๋ฆฌ์คํธ ํญ๋ชฉ ๊พธ๋ฏธ๊ธฐ
: ๋ ์ด์์ ์ ๋ฆฌ์์คํ์ผ(.xml) ์์ฑ
: ๋ค๋ฅธ ๋ฆฌ์์คํ์ผ ๊พธ๋ฏธ๋ฏ์ด ๊พธ๋ฏธ๋ฉด ๋๋ค.
> >๋ฆฌ์คํธ ํญ๋ชฉ ํฌ๊ธฐ ์กฐ์
ConstraintLayout ํด๋ฆญ - Layout - Layout_width, Layout_height ํญ๋ชฉ ์กฐ์
4) Adapter ๋ง๋ค๊ธฐ
- ์ฝ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ๋ ์ด๋ผ๊ณ ์๊ฐํ์
- ๋ฆฌ์คํธ๋ทฐ๋ ์ด๋ํฐ ์ฐ๊ฒฐ์ ๊ผญํด์ผํ๊ณ ์๋ ํจ์๋ค์ ํธ์ถํ๋ค (๊ณ์)!
: ์ฝํ๋ฆฐํ์ผ(.kt) ์์ฑ
class ContentAdapter (val context: Context, val ContentList : ArrayList<Content/*๋ชจ๋ธ๋ช
*/>) : BaseAdapter() {
}
ContentAdapter ์ ์ด๋ํฐ์ ์ด๋ฆ
ContentList ๋ ๋ฐฐ์ด์ด๋ฆ
<>์์ Content ๋ ๋ชจ๋ธ์ด๋ฆ
** ์ค์ : ์ด๋ ๋์ค๋ ์ค๋ฅ์ ๋ํด ์๋๋ก์ด๋ ์คํ๋์ค๊ฐ ์ ์ํ๋ ๋ชจ๋ ํด๊ฒฐ์ฑ ์ ์ํํ๋ฉด (option + enter) ์๋์ ์ฝ๋๊ฐ ์๋์ผ๋ก ํด๋์ค ์์ ๋ง๋ค์ด์ง๋ค.
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
}
override fun getItem(position: Int): Any {
}
override fun getItemId(position: Int): Long {
}
override fun getCount(): Int {
}
4-1. getView ํจ์ ์์ ์ธ ์ฝ๋
4-1-1. ๋ณ์๊ฐ ํ ์คํธ๋ฟ์ด๋ผ๋ฉด
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
// getView : "position" (์ธ๋ฑ์ค์ฒ๋ผ 0๋ถํฐ์์) ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๋ณ์๋ค์ ๋ง๋ ๋ค.
val view: View = LayoutInflater.from(context).inflate(R.layout.๋ฆฌ์คํธ์ด๋ฆ, null)
// ๋ฆฌ์์ค.๋ ์ด์์."xmlํ์ผ"๋ก๋ถํฐ ๋ทฐ๋ฅผ ๋ถ์ด๋ ๊ณผ์
// R.layout.๋ฆฌ์คํธ์ด๋ฆ : ๋ฆฌ์์คํด๋(res) - ๋ ์ด์์ํด๋(layout) - "๋ฆฌ์คํธ์ด๋ฆ"์ด๋ผ๋ ์ด๋ฆ์ ๋ฆฌ์คํธ
val ๋ณ์1 = view.findViewById<TextView>(R.id."ํ
์คํธ๋ทฐ์์ด๋")
val ๋ณ์2 = view.findViewById<TextView>(R.id."ํ
์คํธ๋ทฐ์์ด๋")
// "๋ณ์" ๋ "๋ทฐ์์ด๋" ๋ก๋ถํฐ ๋ทฐ๋ฅผ ์ฐพ์๋ผ
// <>์์๋ ํํ ex.TextView, ImageView...
val content = ContentList[position]
// val ๋ณ์์ด๋ฆ = ๋ฐฐ์ด์ด๋ฆ[position]
// ๋ฐฐ์ด์ 'position+1' ๋ฒ์งธ ํญ๋ชฉ
๋ณ์1.text = content.๋ณ์1
๋ณ์2.text = content.๋ณ์2
//๋ณ์.text ๋ content๋ชจ๋ธ์์ ๋์ด์ค๋ ๋ณ์
return view
}
4-1-2. ๋ณ์์ ์ด๋ฏธ์ง ํฌํจํ๋ค๋ฉด ๋ค์ ์ฝ๋ ์ฌ์ฉ
val ๋ณ์ = view.findViewById<ImageView>(R.id."์ด๋ฏธ์ง๋ทฐ์์ด๋")
์ด๋ฏธ์ง.setImageResource(content.์ด๋ฏธ์ง)
4-2. ๋๋จธ์ง ํจ์
override fun getItem(position: Int): Any {
return ContentList[position]
}
override fun getItemId(position: Int): Long {
return 0
}
override fun getCount(): Int {
return ContentList.size
}
5. Adapter ๋ฅผ Activity ์ ์ฐ๊ฒฐํ๊ธฐ
5-1. ๋ฆฌ์คํธ ์ ์ธ
: ๋ทฐ๋ฆฌ์คํธ๊ฐ ํฌํจ๋ .xml ์ ํฌํจ๋ ์ฝํ๋ฆฐํ์ผ(.kt)์ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋ ์์ฑ
//๋ฆฌ์คํธ ๋ง๋ค๊ธฐ
var ContentList = arrayListOf<๋ชจ๋ธํด๋์ค์ด๋ฆ>(
๋ชจ๋ธํด๋์ค์ด๋ฆ (R.drawable.์ด๋ฏธ์ง, "์์ฑ์ฐ", "๋ถ"), //์ฝค๋ง ๋นผ๋จน์ง๋ง๊ธฐ
๋ชจ๋ธํด๋์ค์ด๋ฆ(R.drawable.์ด๋ฏธ์ง, "๋ฏธ์", "๋ฉ"), //๋ณ์ ์์ ๋ง์ถ๊ธฐ ์ฃผ์
๋ชจ๋ธํด๋์ค์ด๋ฆ(R.drawable.์ด๋ฏธ์ง, "์ ํฉ์ง", "๋ค์ฌ๋ค๋ฅ") //์ฝค๋ง ์๋ถ์ ์ฃผ์
)
์ฌ๊ธฐ์ command + click ์ผ๋ก ๋ชจ๋ธํด๋์ค์ด๋ฆ ํด๋ฆญํ๋ฉด ๋ชจ๋ธํด๋์ค๋ก ๋์ด๊ฐ๋ค -> ์์ฐ๊ฒฐ๋จ
5-2. ๋ฆฌ์คํธ ํ์ฉ
: override fun onCreate ํจ์ ์์์ ํ์ฉ !
val Adapter = ์ด๋ํฐํด๋์ค์ด๋ฆ(this, ContentList)
//์ฌ๊ธฐ์ ์ด๋ํฐ์ชฝ์ผ๋ก ์๋ฉด ์ด๋ํฐ ํด๋์ค์์ val ContentList ์ชฝ์ผ๋ก ๋ฐ์์ ๋ฑ๋ก๋๋ ์๋ฆฌ
listView.adapter = Adapter
//์ด๋ํฐ ์คํ
6. ๊ฐ ๋ฆฌ์คํธ ํด๋ฆญํ์ ๋ ํน์ ์ผ ํ๋๋ก ๋ง๋ค๊ธฐ
์ฌ๊ธฐ์๋ ํ ์คํธํ์ ๋จ๋ ๊ฒ๋ง ๊ตฌํํจ
๋ฆฌ์คํธ๋ทฐ์ด๋ฆ.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
//ํน์ ๋ฆฌ์คํธ ํด๋ฆญ ์ ์คํ
val selection = parent.getItemAtPosition(position) as Content
//ํด๋ฆญํ ํฌ์ง์
์ ๊ฐ์ง ๋ณ์๊ฐ ๋ง๋ค์ด์ง
Toast.makeText(this, "${selection.๋ณ์1}", Toast.LENGTH_SHORT).show()
//ํ ์คํธ ํ์
์ผ๋ก ํด๋ฆญํ ๋ฆฌ์คํธ์ ๋ณ์๊ฐ์ด ๋ฟ
ํ๊ณ ๋์ด
}
'๐ฆ Chango > ๐ฃ EDOC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++][BOJ] ๋ฐฑ์ค 15366๋ฒ: Olivander (0) | 2021.08.25 |
---|---|
[C++][BOJ] ๋ฐฑ์ค 6997๋ฒ: Guessing Game 1 (0) | 2021.08.25 |
[Android Studio / Kotlin] ์ค์ ์ฑ๊ฐ๋ฐ์์ ์ฌ์ฉํ ์ฝํ๋ฆฐ๋ง ๋ชจ์๋ณด๊ธฐ (๊ธฐ๋ณธ) (0) | 2021.05.02 |
[AndroidStudio / Kotlin] Unresolved reference ์ค๋ฅ ํด๊ฒฐ (0) | 2021.05.01 |
[AndroidStudio / Kotlin] ์ฝํ๋ฆฐ ๊ณ ๊ธ๋ฌธ๋ฒ (0) | 2021.04.30 |