Android-jetpack Compose
jetpack compose : (Step 2) ☞ ViewModle(NoteApp)
slow333
2023. 4. 2. 20:11
기존 NoteApp을 ViewModel을 사용해서 변경
app gradle에 implementation "androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1" 추가
1. viewModel 생성 : ./screen/NoteViewModel
class NoteViewModel : ViewModel() {
private var noteList = mutableStateListOf<Note>()
init {
noteList.addAll(NoteDataSource().loadNoteData())
}
fun addNote(note: Note) {
noteList.add(note)
}
fun removeNote(note: Note) {
noteList.remove(note)
}
fun getAllNote(): List<Note> {
return noteList
}
}
2. MainActivity의 입력 값을 viewModel로 변경
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
NoteAppReviewTheme {
Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) {
// val noteList = NoteDataSource().loadNoteData()
// val notes = remember { mutableStateListOf<Note>() }
val noteViewModel: NoteViewModel = viewModel()
NoteScreen(notes = noteViewModel.getAllNote(),
onAdd = {
noteViewModel.addNote(it)},
onRemove = {
noteViewModel.removeNote(it)}
)
}
}
}
}
}