- 사용할 PhoneBook과 Person class
// 전화번호부
class PhoneBook() {
val personList = ArrayList<Person>();
fun addPerson(person: Person) {
personList.add(person)
}
}
class Person(val name: String, val number: String) {
}
- 전화번호부 더미 생성 준비(재활용)
fun createFakePhoneBook(fakeNumber: Int = 10, phoneBook: PhoneBook = PhoneBook()): PhoneBook {
for (i in 0 until fakeNumber) {
phoneBook.addPerson(
Person(
name = "" + i + "번째 사람",
number = "" + i + "번째 사람의 전화번호"
)
)
}
return phoneBook
}
- 어텝더를 달기 위해 adapter 클래스 구현
- 기존에 Addview와 약간 다른 것은, activity도 인자로 받는다는 점.(해당 엑티비티를 통해 startActivity구현)
class PhoneBookRecyclerAdapter(
val phonebookList: PhoneBook,
val inflater: LayoutInflater,
val activity: Activity
) : RecyclerView.Adapter<PhoneBookRecyclerAdapter.ViewHolder>() {
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val personName: TextView
init {
personName = itemView.findViewById(R.id.person_name)
itemView.setOnClickListener {
val intent = Intent(activity, PhoneBookDetailActivity::class.java)
intent.putExtra("name", phonebookList.personList.get(adapterPosition).name)
intent.putExtra("number", phonebookList.personList.get(adapterPosition).number)
//startActivity가 바로 안된다.(상속관계생각)
activity.startActivity(intent)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = inflater.inflate(R.layout.phonebook_item, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.personName.setText(phonebookList.personList.get(position).name)
}
override fun getItemCount(): Int {
return phonebookList.personList.size
}
}
-onCreate
// 데이터 생성
val phonebook = createFakePhoneBook(30)
// 어뎁터 연결
val phoneBookRecyclerAdapter = PhoneBookRecyclerAdapter(
phonebookList = phonebook,
inflater = LayoutInflater.from(this@PhoneBookWithRecyclerViewActivity),
activity = this
)
phonebook_recycler_view.adapter = phoneBookRecyclerAdapter
phonebook_recycler_view.layoutManager = LinearLayoutManager(this@PhoneBookWithRecyclerViewActivity)
변수를 선언하지 않고 축약해서 사용가능, 다만 너무 축약하면 다른 사람들이 보기에 코드가 난해할 수 있음
//위를 아래와 같이 축약 가능, 장단점있음
with(phonebook_recycler_view){
this.adapter = PhoneBookRecyclerAdapter(
phonebookList = createFakePhoneBook(30),
inflater = LayoutInflater.from(this@PhoneBookWithRecyclerViewActivity),
activity = this@PhoneBookWithRecyclerViewActivity
)
this.layoutManager = LinearLayoutManager(this@PhoneBookWithRecyclerViewActivity)
}
Tablayout, pager(2) (0) | 2020.11.19 |
---|---|
TabLayout, Pager (0) | 2020.11.19 |
RecyclerView (0) | 2020.11.19 |
ListView (0) | 2020.11.19 |
addView(전화번호부 만들기) (0) | 2020.11.19 |
댓글 영역