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)}
               )
            }
         }
      }
   }
}