AndroidX kitaplığı, Mimari'yi içeriyor Bileşenler'i tıklayın. sağlam, test edilebilir ve bakımı yapılabilir uygulamalar tasarlamak için kullanıyor. Veri Bağlama Kitaplığı, mimari ile sorunsuz şekilde çalışır Daha da basitleştiren bileşenler geliştirmenizi sağlar. Uygulamanızdaki düzenler mimari Bileşenler'deki verilere bağlanabilir, böylece Kullanıcı arayüzü denetleyicisinin yaşam döngüsünü yönetme ve kullanıcı arayüzünü verilerdeki değişiklikler hakkında bilgilendirme.
Bu sayfada, mimari Bileşenleri'nin uygulamanıza nasıl dahil edileceği gösterilmektedir en verimli şekilde nasıl kullanacağımızı konuşacağız.
Kullanıcı arayüzünü veri değişiklikleri hakkında bilgilendirmek için LiveData'yı kullanma
LiveData
nesnelerini şu şekilde kullanabilirsiniz:
değişiklikleri hakkında kullanıcı arayüzünü otomatik olarak bilgilendirmek için veri
verileri. Bu Mimari Bileşeni hakkında daha fazla bilgi için LiveData
genel bakış bölümüne bakın.
Uygulanabilir
Observable
- gibi
gözlemlenebilir
alanları—LiveData
verilere abone olan gözlemcilerin yaşam döngüsü hakkında bilgi sahibi olan nesneler
anlamına gelir. Bu bilgiler,
avantajları
LiveData bölümüne bakın.
Android Studio 3.1 ve sonraki sürümlerinde gözlemlenebilir alanları değiştirebilirsiniz
veri bağlama kodunuzda LiveData
nesne kullanın.
Bağlama sınıfınızla bir LiveData
nesnesi kullanmak için bir
yaşam döngüsü sahibini (LiveData
nesnesinin kapsamını tanımlamak için) kullanın. Aşağıdakiler
örnek, bağlama sınıfından sonra etkinliği yaşam döngüsü sahibi olarak belirtir
şu örneklendirildi:
Kotlin
class ViewModelActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { // Inflate view and obtain an instance of the binding class. val binding: UserBinding = DataBindingUtil.setContentView(this, R.layout.user) // Specify the current activity as the lifecycle owner. binding.setLifecycleOwner(this) } }
Java
class ViewModelActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { // Inflate view and obtain an instance of the binding class. UserBinding binding = DataBindingUtil.setContentView(this, R.layout.user); // Specify the current activity as the lifecycle owner. binding.setLifecycleOwner(this); } }
ViewModel
kullanabilirsiniz
bileşenini düzeninize bağlayın. ViewModel
bileşeninde,
verileri dönüştürmek veya birden çok veriyi birleştirmek için LiveData
nesnesini kullanabilirsiniz
kaynaklar. Aşağıdaki örnekte, ViewModel
içindeki verilerin nasıl dönüştürüleceği gösterilmektedir:
Kotlin
class ScheduleViewModel : ViewModel() { val userName: LiveDatainit { val result = Repository.userName userName = Transformations.map(result) { result -> result.value } } }
Java
class ScheduleViewModel extends ViewModel { LiveDatausername; public ScheduleViewModel() { String result = Repository.userName; userName = Transformations.map(result, result -> result.value); } }
Kullanıcı arayüzüyle ilgili verileri yönetmek için ViewModel'i kullanma
Veri Bağlama Kitaplığı,
ViewModel
bileşenleri hakkında daha fazla bilgi edinin. ViewModel
düzenin gözlemlediği ve değişikliklerine tepki verdiği verileri gösterir. Kullanım
Veri Bağlama Kitaplığı ile ViewModel
bileşenleri, kullanıcı arayüzü mantığını taşımanıza olanak tanır
daha kolay test edebileceğiniz şekilde oluşturulur. Veriler
Bağlama Kitaplığı, görünümlerin verilere bağlı olmasını ve verilerle bağlantısını kaldırmasını sağlar
kaynak olarak kullanabilirsiniz. Kalan işlerin büyük bir kısmı,
müşterilerin ihtiyaçlarını
Böylece doğru verileri sunmuş olursunuz. Bu mimari hakkında daha fazla bilgi için
bileşeni hakkında daha fazla bilgi edinmek için ViewModel
genel bakış bölümüne bakın.
ViewModel
bileşenini Veri Bağlama Kitaplığı ile kullanmak için
bileşeninizi örneklendirin ve bu örnek,
ViewModel
ders,
bağlama sınıfınızın örneğini seçin ve ViewModel
bileşeninizi bir
özelliğini eklemeniz gerekir. Aşağıdaki örnekte,
bileşeni şu kitapla ekleyin:
Kotlin
class ViewModelActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { // Obtain the ViewModel component. val userModel: UserModel by viewModels() // Inflate view and obtain an instance of the binding class. val binding: UserBinding = DataBindingUtil.setContentView(this, R.layout.user) // Assign the component to a property in the binding class. binding.viewmodel = userModel } }
Java
class ViewModelActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { // Obtain the ViewModel component. UserModel userModel = new ViewModelProvider(this).get(UserModel.class); // Inflate view and obtain an instance of the binding class. UserBinding binding = DataBindingUtil.setContentView(this, R.layout.user); // Assign the component to a property in the binding class. binding.viewmodel = userModel; } }
Düzeninizde ViewModel
bileşeninizin özelliklerini ve yöntemlerini atayın
aşağıdaki gösterildiği gibi, bağlama ifadeleri kullanarak karşılık gelen görünümlere
örnek:
<CheckBox
android:id="@+id/rememberMeCheckBox"
android:checked="@{viewmodel.rememberMe}"
android:onCheckedChanged="@{() -> viewmodel.rememberMeChanged()}" />
Bağlama bağdaştırıcıları üzerinde daha fazla kontrol için gözlemlenebilir ViewModel kullanma
ViewModel
kullanabilirsiniz
bileşeni uygulayan bileşen
Observable
arayüzü
diğer
hakkında yaptığınız uygulama içeriğine benzer bir şekilde,
LiveData
nesnesini tanımlayın.
Bir
Observable
öğesini uygulayan ViewModel
bileşeni
yaşam döngüsünü kaybetseniz bile LiveData
nesnelerini kullanarak
LiveData
yönetim özellikleri. Şu özelliklere sahip bir ViewModel
bileşeni kullanmak:
Observable
uygulamak, uygulamanızdaki bağlama bağdaştırıcıları üzerinde daha fazla kontrol sahibi olmanızı sağlar.
uygulamasını indirin. Örneğin, bu kalıbı kullandığınızda bildirimler üzerinde daha fazla
Veriler değiştiğinde, aynı zamanda dönüşüm izleme özelliğini ayarlamak için özel bir yöntem
değerini girin.
Gözlemlenebilir ViewModel
bileşenini uygulamak için şu özelliklere sahip bir sınıf oluşturmanız gerekir:
ViewModel
sınıfından devralır ve Observable
uygular
arayüzü. Bir gözlemci abone olduğunda veya
addOnPropertyChangedCallback()
ve
removeOnPropertyChangedCallback()
yöntemlerine göz atın. Ayrıca, özellikler değiştiğinde çalışan özel bir mantık da
"the"
notifyPropertyChanged()
yöntemidir. Aşağıdaki kod örneğinde,
ViewModel
:
Kotlin
/** * A ViewModel that is also an Observable, * to be used with the Data Binding Library. */ open class ObservableViewModel : ViewModel(), Observable { private val callbacks: PropertyChangeRegistry = PropertyChangeRegistry() override fun addOnPropertyChangedCallback( callback: Observable.OnPropertyChangedCallback) { callbacks.add(callback) } override fun removeOnPropertyChangedCallback( callback: Observable.OnPropertyChangedCallback) { callbacks.remove(callback) } /** * Notifies observers that all properties of this instance have changed. */ fun notifyChange() { callbacks.notifyCallbacks(this, 0, null) } /** * Notifies observers that a specific property has changed. The getter for the * property that changes must be marked with the @Bindable annotation to * generate a field in the BR class to be used as the fieldId parameter. * * @param fieldId The generated BR id for the Bindable field. */ fun notifyPropertyChanged(fieldId: Int) { callbacks.notifyCallbacks(this, fieldId, null) } }
Java
/** * A ViewModel that is also an Observable, * to be used with the Data Binding Library. */ class ObservableViewModel extends ViewModel implements Observable { private PropertyChangeRegistry callbacks = new PropertyChangeRegistry(); @Override protected void addOnPropertyChangedCallback( Observable.OnPropertyChangedCallback callback) { callbacks.add(callback); } @Override protected void removeOnPropertyChangedCallback( Observable.OnPropertyChangedCallback callback) { callbacks.remove(callback); } /** * Notifies observers that all properties of this instance have changed. */ void notifyChange() { callbacks.notifyCallbacks(this, 0, null); } /** * Notifies observers that a specific property has changed. The getter for the * property that changes must be marked with the @Bindable annotation to * generate a field in the BR class to be used as the fieldId parameter. * * @param fieldId The generated BR id for the Bindable field. */ void notifyPropertyChanged(int fieldId) { callbacks.notifyCallbacks(this, fieldId, null); } }
Ek kaynaklar
Veri bağlama hakkında daha fazla bilgi için aşağıdakilere bakın ek kaynaklar.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Gözlemlenebilir veri nesneleriyle çalışma
- Sayfalandırılmış verileri yükleme ve görüntüleme
- Yaşam döngüsüne duyarlı bileşenlerle Kotlin eş yordamlarını kullanma