MVVM(Model-View-ViewModel) ν¨ν΄μ μλλ‘μ΄λμμ UIμ λ°μ΄ν° λ‘μ§μ λΆλ¦¬νμ¬ κ΅¬μ‘°νλ μ½λλ₯Ό μμ±ν μ μλλ‘ λμμ£Όλ λμμΈ ν¨ν΄μ λλ€.
μ΄ ν¨ν΄μ μ μ©νλ©΄ μ μ§λ³΄μμ±, νμ₯μ±, ν μ€νΈ κ°λ₯μ±μ΄ ν₯μλ©λλ€.
MVVM ν¨ν΄μ Model (λ°μ΄ν° μ²λ¦¬), View (UI), **ViewModel (λΉμ¦λμ€ λ‘μ§, UI μν κ΄λ¦¬)**μ μΈ κ°μ§ μ»΄ν¬λνΈλ‘ ꡬμ±λ©λλ€.
bash
볡μ¬νΈμ§
app/
βββ data/ # λ°μ΄ν° κ΄λ ¨ ν΄λμ€
β βββ model/ # λ°μ΄ν° λͺ¨λΈ (μ: Post.java)
β βββ repository/ # λ°μ΄ν° μμ€ (μ: PostRepository.java)
β βββ network/ # API ν΅μ (μ: RetrofitClient.java, ApiService.java)
βββ ui/ # UI κ΄λ ¨ ν΄λμ€
β βββ view/ # UI ν΄λμ€ (μ: MainActivity.java, RecyclerView Adapter)
β βββ viewmodel/ # ViewModel (μ: PostViewModel.java)
Repositoryλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό ViewModelμ μ λ¬.java
볡μ¬νΈμ§
public class Post {
private int userId;
private int id;
private String title;
private String body;
public int getUserId() { return userId; }
public int getId() { return id; }
public String getTitle() { return title; }
public String getBody() { return body; }
}
observe())νμ¬ UIλ₯Ό μ
λ°μ΄νΈ.java
볡μ¬νΈμ§
viewModel.getPosts().observe(this, posts -> {
adapter.setPosts(posts);
});