코틀린 문법

안드로이드 앱 개발에서 바로 활용할 수 있는 코틀린 실전 문법을 정리했습니다.
기초 문법을 넘어, 실무에서 자주 쓰이는 코드 위주로 구성되어 있습니다.


View Binding (뷰바인딩)

XML 레이아웃과 코틀린 코드를 안전하게 연결하기 위한 기능입니다.

build.gradle 설정

android {
buildFeatures {
viewBinding true
}
}

사용 예시

class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.myButton.setOnClickListener {
binding.textView.text = “버튼 클릭됨!”
}
}
}


Intent로 화면 전환하기

액티비티 간 데이터를 전달할 때 사용합니다.

전송

val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("name", "재은")
startActivity(intent)

수신

val name = intent.getStringExtra("name")

RecyclerView 사용법

리스트나 피드 형태의 UI를 구성할 때 필수로 사용합니다.

어댑터 예시

class MyAdapter(private val items: List<String>) :
RecyclerView.Adapter<MyAdapter.ViewHolder>() {

inner class ViewHolder(val binding: ItemRowBinding) :
RecyclerView.ViewHolder(binding.root)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = ItemRowBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.binding.textView.text = items[position]
}

override fun getItemCount() = items.size
}

Activity 설정

val items = listOf("사과", "배", "포도")
val adapter = MyAdapter(items)
binding.recyclerView.adapter = adapter
binding.recyclerView.layoutManager = LinearLayoutManager(this)

Coroutine으로 비동기 처리

코루틴은 UI 멈춤 없이 백그라운드 작업을 수행할 수 있게 해줍니다.

lifecycleScope.launch {
val data = fetchData()
binding.textView.text = data
}

suspend fun fetchData(): String {
delay(1000)
return “네트워크 응답 완료!”
}


SharedPreferences로 간단한 데이터 저장

앱 내에 간단한 데이터를 저장하거나 불러올 때 사용합니다.

val pref = getSharedPreferences("MyPref", MODE_PRIVATE)
val editor = pref.edit()
editor.putString("name", "재은")
editor.apply()

val name = pref.getString(“name”, “기본값”)


AlertDialog로 사용자 알림 띄우기

AlertDialog.Builder(this)
.setTitle("알림")
.setMessage("진짜 종료하시겠습니까?")
.setPositiveButton("예") { _, _ -> finish() }
.setNegativeButton("아니오", null)
.show()

Toast와 Snackbar 메시지

Toast.makeText(this, "저장 완료!", Toast.LENGTH_SHORT).show()
Snackbar.make(binding.root, "삭제되었습니다", Snackbar.LENGTH_SHORT).show()

생명주기(Lifecycle) 다루기

Activity나 Fragment의 상태 변화에 따라 코드가 실행되도록 합니다.

override fun onStart() {
super.onStart()
Log.d("MainActivity", "앱이 시작됨")
}

ViewModel + LiveData로 상태 관리

데이터를 UI 생명주기와 분리해 안정적으로 관리할 수 있습니다.

ViewModel

class MainViewModel : ViewModel() {
val count = MutableLiveData(0)
fun increase() {
count.value = count.value?.plus(1)
}
}

Activity

val viewModel = ViewModelProvider(this)[MainViewModel::class.java]
viewModel.count.observe(this) {
binding.textView.text = "$it"
}

binding.button.setOnClickListener {
viewModel.increase()
}


Extension 함수로 코드 간결하게 만들기

fun View.visible() { this.visibility = View.VISIBLE }
fun View.gone() { this.visibility = View.GONE }

binding.progressBar.gone()


Data Class로 데이터 구조 정의하기

data class User(val name: String, val age: Int)

val user = User(“재은”, 25)
println(user.name)


Null-safe 코드 작성하기

binding.textView.text = user?.name ?: "이름 없음"

게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다