2023. 2. 9. 17:36ใAndroid
๐คท๐ปโ๏ธ ๋ฌธ์ ์
- ๊ฐ๋ฐ ๋์ค ์ด์ค ๋ฆฌ์ฌ์ดํด๋ ค ๋ทฐ๋ฅผ ๋ง๋ค๊ฒ ๋์๋๋ฐ (์ ํ๋ธ, ์๊ธฐ์, ๋ฐฐ๋ฏผ, ๋ค์ด๋ฒ๋ฑ์ ์กด์ฌํ๋ ์๋จ ์ ํ๋ฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด) ์ง๊ธ ๋ฆฌ์ฌ์ดํด๋ ค ๋ทฐ์์ ํด๋ฆญํ ์์น๋ฅผ ์์๋ด์ผ๋๋ ์ผ์ด ๋ฐ์ํ์๋ค
์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์ฌ์ดํด๋ฌ ๋ทฐ ์ด๋ฒคํธ๋ฅผ ์ด๋ํฐ ๋ด์์ ์ฒ๋ฆฌํด ์กํฐ๋นํฐ๋ ํ๋๊ทธ๋จผํธ์์ ์ ๋ณด๋ฅผ ์ ์ ์์๋ค
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ด๋ํฐ ๋ด์์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด ํด๋ฆญํ ์ด๋ฐดํธ์ position์ ์ธ๋ถ๋ก ๋ณด๋ด์ค ์กํฐ๋นํฐ๋ ํ๋๊ทธ๋จผํธ์์ ํ์ธํ ์ ์๊ฒ ๋ง๋ค์ด์คฌ๋ค
-> ์ถ๊ฐ์ ์ธ ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก๋ xml์ Chip ์์ ฏ์ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค ๐ค
class TopScrollRecyclerAdapter(val dataList: Array<String>, spinnerData: String, val context: Context, binding: FragmentMapBinding) :
RecyclerView.Adapter<TopScrollRecyclerAdapter.TopScrollHolder>(){
private val call by lazy { Retrofit_API.getInstance() }
val intent = Intent(context, PickActivity::class.java)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TopScrollHolder {
val binding = ScrollItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return TopScrollHolder(binding)
}
override fun onBindViewHolder(holder: TopScrollHolder, position: Int) {
holder.btn_name.text = dataList[position]
holder.itemView.setOnClickListener {
itemClickListener.onClick(it, position)
}
}
// (2) ๋ฆฌ์ค๋ ์ธํฐํ์ด์ค
interface OnItemClickListener {
fun onClick(v: View, position: Int)
}
// (3) ์ธ๋ถ์์ ํด๋ฆญ ์ ์ด๋ฒคํธ ์ค์
fun setItemClickListener(onItemClickListener: OnItemClickListener) {
this.itemClickListener = onItemClickListener
}
// (4) setItemClickListener๋ก ์ค์ ํ ํจ์ ์คํ
private lateinit var itemClickListener : OnItemClickListener
override fun getItemCount(): Int {
return dataList.size
}
class TopScrollHolder(binding: ScrollItemBinding) : RecyclerView.ViewHolder(binding.root){
val btn_name : TextView = binding.scrollBtn
}
}
Fragment ๋ด์์ ํด๋ฆญ ์ด๋ฒคํธ position์ ๊ฐ์ ธ์ฌ ์ ์๋ค
๋ฐฐ์ด์ ํตํด ํด๋น position์ ํ์ํ ์์น ์ ๋ณด๋ฅผ ๋ฃ์ด ๊ฐ์ ธ์จ๋ค
val topAdapter = TopScrollRecyclerAdapter(topData, mainActivity)
// ์๋จ ์คํฌ๋กค ๋ฒํผ ๋ฆฌ์ฌ์ดํด๋ฌ ๋ทฐ
topRecyclerView.adapter = topAdapter
topAdapter.setItemClickListener(object : TopScrollRecyclerAdapter.OnItemClickListener {
override fun onClick(v: View, position: Int) {
val category = arrayOf(0, 1, 3, 5, 2, 4, 6)
t_position = category[position]
spinner!!.visibility = View.VISIBLE
retrofit("desc", t_position.toString())
}
})