liveData
속성에 관찰자를 추가 한 다음 관찰자에게 데이터 변경 후 UI를 변경하도록 알립니다.
예
채점 데모는 가장 기본적인 문법 방식으로 구현되며 활동은 세 가지 구성 요소와 해당 클릭 이벤트에 대한 참조를 보유하고 클릭을 클릭하면 카운터가 증가하고 텍스트보기 디스플레이가 동시에 업데이트됩니다. ;
다음은 인터넷상의 Longway 선생님 사진이며 컨트롤을 클릭 한 후의 두 작업은 라이브
데이터를 통해 분리됩니다 .1.livedata 는 데이터에 관찰자를 추가하고 데이터가 변경되는 동안 텍스트 뷰를 업데이트합니다 .2.
이벤트를 클릭합니다.
아래와 같이 점수 코드 만 변경하려면
/**
* 测试LiveData
*/
public class MainActivity2 extends AppCompatActivity {
private TextView textView;
private Button button1;
private Button button2;
private MainViewModel2 viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
button1 = findViewById(R.id.button1);
button2 = findViewById(R.id.button2);
viewModel = ViewModelProviders.of(this).get(MainViewModel2.class);//新版这里写法不同
textView.setText(String.valueOf(viewModel.getScore()));
//对分数数据添加观察者,变动后自动更新UI
viewModel.getScore().observe(this, new Observer<Integer>() {
@Override
public void onChanged(Integer integer) {
textView.setText(String.valueOf(integer));
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewModel.addScore(1);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewModel.addScore(2);
}
});
}
}
모델 클래스
/**
* 测试liveData对应的类
*/
public class MainViewModel2 extends ViewModel {
private MutableLiveData<Integer> score;
public MainViewModel2() {
score = new MutableLiveData<>();
score.setValue(0);
}
public void addScore(int n) {
score.setValue(new Integer(score.getValue() + n));
}
public MutableLiveData<Integer> getScore() {
return score;
}
}
이 기록 만 궁금한 점이 있으면 지적 해주세요, 감사합니다