LiveData는 사용하기 쉽습니다.

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

이 기록 만 궁금한 점이 있으면 지적 해주세요, 감사합니다

추천

출처blog.csdn.net/nongminkouhao/article/details/114993883