Android中ViewModel的基本用法

415 阅读1分钟

在Android中,ViewMode的使用基本步骤如下:
1,自定义 ViewModel 继承 ViewModel,在自定义 ViewModel 中编写获取UI数据的逻辑,配合使用 LiveData实现数据驱动。
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class MyViewModel extends ViewModel {
// 声明一个MutableLiveData来存储数据
private MutableLiveData myData = new MutableLiveData<>();
// 提供一个方法来更新数据
public void updateData(String newData) {
myData.setValue(newData);
}
// 提供一个方法来获取LiveData对象,供Activity或Fragment观察
public LiveData getMyData() {
return myData;
}
}

2,在 Activity / Fragment中 获取 ViewModel 实例,监听或收集 ViewModel 中的 LiveData数据,进行对应的UI更新。

public class MyActivity extends AppCompatActivity {   

private MyViewModel myViewModel;  

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_my);  

    // 获取ViewModel的实例  
    myViewModel = new ViewModelProvider(this).get(MyViewModel.class);  

    // 获取UI组件  
    TextView textView = findViewById(R.id.textView);  

    // 观察LiveData中的数据变化  
    myViewModel.getMyData().observe(this, new Observer<String>() {  
        @Override  
        public void onChanged(String s) {  
            // 更新UI  
            textView.setText(s);  
        }  
    });  

    // 模拟数据更新  
    myViewModel.updateData("Hello from ViewModel!");  
}  

}
3,定义布局文件使之包含一个TextView,用于显示从ViewModel中获取的数据。

<TextView  
    android:id="@+id/textView"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:text="Data will appear here" />