0) 코틀린은 프로젝트 아니면 만질 일이 없지만.. 스터디원께서 해주신 강의가 너무 유용했어서 적어보는 강의 필기내용
거기에 굳이 코틀린이 아니더라도 자바와 연관된 내용이 많아서 어쩌다보니 집중해서 듣게 됐다..
그리고 DMC2는 지금 스터디에서 같이 만들고 있는 프로젝트 이름이닷
이 셋을 통해 리사이클러뷰에 아이템을 넣어 동작하도록 함.
만약 데이터에 필터링 등을 통해 원하는 데이터로만 작업하고 싶다면, ViewHolder와 ViewAdapter가 본인의 역할만을 할 수 있도록 Activity(Fragment)에서 선 작업을 거쳐주는 편이 좋음.
1)과 동일한 맥락에서 inner class나 interface 같이 독립할 수 있는 부분은 따로 파일을 생성해서 표현해주는 편이 좋음.
EX) OnItemClickListener, MyViewHolder
함수를 구현할 때 안에 따로 코드를 집어넣을 게 아니라면 {} 생략 가능
val은 불변, var은 가변이라고 하기엔 애매해짐.
val은 초기에 값을 할당하면 나중에 값을 변경할 수 없으며, 값을 변경하게 되면 컴파일 에러가 발생함 - 불변
자바에서의 final도 비슷한 역할을 함.
다만 변수의 참조가 가리키는 객체의 내부 값은 변경이 가능함.
val arr = arrayListOf("d")
arr.add("b") // 가능함.
저장한 객체를 읽을 일이 생길 수 있을 때 사용함.
클래스가 파일에 읽거나 쓸 수 있도록 하며, 다른 서버로 보내거나 받을 때도 이 인터페이스를 사용함.
DMC2에서는 intent를 사용하는데 객체에 다음을 붙이면 객체 통째로 전송이 가능함.
이때 받을 때는 intent.getSerializableCompat<StoreInformation>("id") ?: StoreInformation(~~)
형식을 이용함.
코틀린에서는 null이 담길 수 있는 변수의 설명을 보면 타입에 ?가 붙는데, 이 ?를 없애기 위해 null이 올때 대체할 값을 미리 지정함.
물음표가 엘비스라는 사람의 머리처럼 생겼다고 해서 엘비스 연산자라고 부름. 머리 귀엽게 생기셨네
자바에서 static과 유사함. - 완전 똑같지는 않음.
DMC2에서는 인텐트 경로 설정을 위해 사용되었음.
class RecommendDetailActivity : AppCompatActivity() {
...
companion object {
fun getIntent(context: Context): Intent {
return Intent(context, RecommendDetailActivity::class.java)
}
}
}
class CategoryFragment : Fragment(), OnItemClickListener {
...
override fun onItemClick(id: Int) {
val intent = RecommendDetailActivity.getIntent(requireContext())
intent.putExtra("id", id)
startActivity(intent)
}
}
사용은 다음처럼 클래스 이름에 경로를 붙여 사용함.
binding을 사용할 땐 굳이 findViewById를 사용하지 않아도 됨.
binding에서 경로 타고 원하는 id를 바로 집어올 수 있음.