Search

기초 멘토링 1조_6주차

분류
기타
담당멘토
양민욱
멘토링 요청시간
2023/08/06 21:00-22:00
멘토링 시간
2023/08/06 21:00-22:00
멘토링방
멘토링룸1
배정상태
해결완료
비용지급
지급완료
번호
0
신청팀
기초멘토링팀
소요시간
1
작성자
차지훈/천성민
멘티 질문은 멘토링 시간 내에 실시간으로 질문 받으면서 진행했습니다.

질문

데이터베이스 파일의 이름은 아무 이름이나 써도 되나요?
SQLiteOpenHelper(context, "Test.db", null, 1) Test.db 등 Database 파일은 개발자가 마음대로 지어도 되며, 실제 핸드폰 저장 공간에 Test.db라는 데이터베이스 파일이 생성된다고 말씀드렸습니다. 추가로 version에 대해서 설명드리며 version이 올라갈 경우 migration을 고려해야 한다고 설명드렸습니다.
DAO 파일이랑 DBHelper 파일이 있는 이유가 궁금해요. DBHelper 파일에 update, insert 함수 모두 존재하면 되는거 아닌가요?
클래스 책임 분리에 대해서 설명 드리면서 DAO는 Database에서 값을 관리하는 역할을, DBHelper는 Database 생성 및 업데이트를 관리하는 역할을 가진다고 설명드렸습니다.
MVVM 개념이 아직 정확히 잡혀있지 않아요
RecyclerView를 구현하기 위해서는 ViewHolder, Adapter가 필요하며, ViewHolder와 Adapter의 역할과 함수들을 라이브 코딩으로 설명드렸습니다.
/** * Recyclerview 관리자. * * RecyclerView.Adapter를 상속을 받아야 함. 제네릭 타입 -> 자료형이 뷰홀더 클래스 * * - onCreateViewHolder * 실제로 뷰 객체로 만드는 곳. * * - getItemCount * 리스트 size * * - onBindViewHolder */ class MainRecyclerAdapter : RecyclerView.Adapter<MainViewHolder>(){ private var itemList: List<Int> = emptyList() fun updateList(newList: List<Int>) { itemList = newList //notify* notifyDataSetChanged() // 리스트 100개 100개를 모두 새로고침 notifyItemChanged(100) // 100 index에 해당하는 로우만 새로고침 } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MainViewHolder { val rowBinding = RowBinding.inflate(layoutInflater) val mainViewHolder = MainViewHolder(rowBinding) rowBinding.root.layoutParams = ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT ) return mainViewHolder } override fun getItemCount(): Int { return itemList.size } override fun onBindViewHolder(holder: MainViewHolder, position: Int) { holder.textViewRow.text = viewModelTest2.dataList.value?.get(position)?.data1 } } // ViewHolder 클래스를 만들어야 됨. // RecyclerView.ViewHolder 클래스를 상속을 받아야한다. -> RecyclerView의 리스트 한 Row의 뷰를 Adapter에게 알려줌 // 뷰 계획서. // 실제로 뷰는 만들어지지 않았지만 이렇게 만들어 질거다. class MainViewHolder(rowBinding: RowBinding) : RecyclerView.ViewHolder(rowBinding.root) { var textViewRow:TextView init{ textViewRow = rowBinding.textViewRow rowBinding.root.setOnClickListener { val newIntent = Intent(this@MainActivity, ResultActivity::class.java) // 값을 가지고 있는 객체를 추출한다. val t1 = viewModelTest2.dataList.value?.get(adapterPosition) newIntent.putExtra("testIdx", t1?.idx) // // ViewModel 객체에 새로운 값을 설정한다. // viewModelTest1.data1.value = t1?.data1!! // viewModelTest1.data2.value = t1?.data2!! startActivity(newIntent) } } }
Kotlin
복사