
๋ณธ๊ฒฉ ๋ด๊ฐ ๊ณต๋ถํ ๊ฑฐ ๋ด๊ฐ ์ ๋ฆฌํ๊ธฐ๐ฅ

โจ Model-View-ViewModel์ ์ฝ์๋ก ์ํํธ์จ์ด ์ํคํ
์ฒ ๋์์ธ ํจํด์ด๋ค.
View
Model
ViewMdoel
MVVM์ '๋์์ธ ํจํด'์ด๋ผ๊ณ ๋ช ์ํ๋ ๊ฒฝ์ฐ๋ ์๊ณ , '์ํคํ ์ฒ'๋ผ๊ณ ๋ช ์ํ๋ ๊ฒฝ์ฐ๋ ์๋๋ฐ ์ด์ ๊ด๋ จํด์๋ ์ํคํ ์ฒ ํจํด๊ณผ ๋์์ธํจํด์ ์ฐธ๊ณ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค
โจ ๋ชจ๋ธ ํด๋์ค ์ ์ํ๊ธฐ
data class TodoItem(
val id: Int,
val title: String,
val isCompleted: Boolean
)
โจ ์กํฐ๋นํฐ์ ๋ทฐ๋ชจ๋ธ ์ ์ฉํ๊ธฐ
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var viewModel: TodoListViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// ViewModel ์ด๊ธฐํ
viewModel = ViewModelProvider(this).get(TodoListViewModel::class.java)
// ViewModel์์ ๋ฐ์ดํฐ๋ฅผ ๊ด์ฐฐํ๊ณ UI๋ฅผ ์
๋ฐ์ดํธ
viewModel.todoItems.observe(this, Observer { todoItems ->
todoItemsTextView.text = todoItems.joinToString("\n") { it.title }
})
// ๋ฐ์ดํฐ ๋ก๋ฉ ์์ฒญ
viewModel.fetchTodoItems()
}
}
โจ ๋ทฐ๋ชจ๋ธ ๊ตฌํํ๊ธฐ
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class TodoListViewModel : ViewModel() {
private val _todoItems = MutableLiveData<List<TodoItem>>()
val todoItems: LiveData<List<TodoItem>> = _todoItems
fun fetchTodoItems() {
// ์ค์ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ก์ง์ ์ฌ๊ธฐ์ ๊ตฌํ๋จ
val items = listOf(
TodoItem(1, "Buy groceries", false),
TodoItem(2, "Walk the dog", true)
)
_todoItems.value = items
}
}