65. FRAGMENT
@Override
public View onCreateView(…){
ActivityBeerBinding binding =
DataBindingUtil.inflate(inflater, R.layout.activity_beer,
container, false);
BeerCountViewModel viewModel =
new BeerCountViewModel(new BeerCountModel());
binding.setBeerViewModel(viewModel);
return binding.getRoot();
}
66. FRAGMENT
@Override
public View onCreateView(…){
ActivityBeerBinding binding =
DataBindingUtil.inflate(inflater, R.layout.activity_beer,
container, false);
BeerCountViewModel viewModel =
new BeerCountViewModel(new BeerCountModel());
binding.setBeerViewModel(viewModel);
return binding.getRoot();
}
67. VIEW MODEL
public class BeerCountViewModel extends BaseObservable {
private int beerCount;
@Bindable
public int getBeerCount() {
return beerCount;
}
public void setBeerCount(int beerCount) {
this.beerCountModel.setBeerCount(beerCount);
notifyPropertyChanged(BR.beerCount);
}
}
68. VIEW MODEL
extends BaseObservable {
t beerCount) {
BeerCount(beerCount);
R.beerCount);
• Classe base
• Implementa a interface
Observable
• Usado pra notificar a
mudanças para a view
69. VIEW MODEL
public class BeerCountViewModel extends BaseObservable {
private int beerCount;
@Bindable
public int getBeerCount() {
return beerCount;
}
public void setBeerCount(int beerCount) {
this.beerCountModel.setBeerCount(beerCount);
notifyPropertyChanged(BR.beerCount);
}
}
70. VIEW MODEL
ublic class BeerCountViewModel extends BaseObservable {
private int beerCount;
@Bindable
public int getBeerCount() {
return beerCount;
}
public void setBeerCount(int beerCount) {
this.beerCountModel.setBeerCount(beerCount);
notifyPropertyChanged(BR.beerCount);
}
71. VIEW MODEL
ublic class BeerCountViewModel extends BaseObservable {
private int beerCount;
@Bindable
public int getBeerCount() {
return beerCount;
}
public void setBeerCount(int beerCount) {
this.beerCountModel.setBeerCount(beerCount);
notifyPropertyChanged(BR.beerCount);
}
90. public class UserViewModel : BaseViewModel
public string Username
{
get { return this.username; }
set
{
SetPropertyAndNotify(ref this.username, value);
ValidateUsername();
}
}
UserViewModel
Apenas validação simples!
Sem longos processamentos e/ou
chamadas assíncronas.
Ex:. APIs ou banco de dados
92. public int DrankBeersCount
{
get
{
return this.drankBeersCount;
}
set
{
SetPropertyAndNotify(ref this.drankBeersCount, value);
OnPropertyChanged(nameof(DrunkenPersonImage));
}
}
public string DrunkenPersonImage
{
get { return GetBeerImage(DrankBeersCount); }
}
BeerViewModel