기존 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)}
)
}
}
}
}
}'Android-jetpack Compose' 카테고리의 다른 글
| room db 실행 시 compile은 잘되나 튕김 발생 (0) | 2023.04.24 |
|---|---|
| jetpack compose-Retrofit, JSON (0) | 2023.04.04 |
| jetpack compose : (Step 1) Without ViewModle(NoteApp) (0) | 2023.04.02 |
| jetpack compose : (Step 3) ViewModel ☞ DI(Hilt), Room(NoteApp) (0) | 2023.04.02 |
| jetpack compose - dependency injection, Room 참고 자료-사이트 (0) | 2023.04.02 |