Я пытаюсь использовать значение Long
в Android Databinding
, но просто не могу заставить его работать. Это все, что я пробовалИспользование Long Value в Android Databinding
1: Это сработало отлично. Пока я не начал тестирование на pre-lollipop, и я начал испытывать сбои. Я должен был удалить этот android:addTextChangedListener="@{outlet.onCapacityChange}"
из XML
Java
@SerializedName("capacity")
@Expose
Long capacity
/**
*
* @return
* The capacity
*/
@Bindable
public Long getCapacity() {
return capacity;
}
/**
*
* @param capacity
* The capacity
*/
public void setCapacity(Long capacity) {
setAtomicCapacity(capacity);
Log.e(TAG+"Capacity", "" + capacity);
notifyPropertyChanged(BR.capacity);
}
public void setAtomicCapacity(Long basic) {
this.capacity = basic;
}
public TextWatcher onCapacityChange = new SimpleTextWatcher() {
@Override
public void onTextChanged(String newValue) {
Log.e(TAG+"Capacity", newValue);
setAtomicCapacity(Long.valueOf(newValue));
}
};
XML
<EditText
android:id="@+id/outletStockCapacity"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_marginBottom="16dp"
android:inputType="number"
android:text='@{outlet.capacity != null ? String.valueOf(outlet.capacity) : ""}'
android:addTextChangedListener="@{outlet.onCapacityChange}"
android:singleLine="true"
android:imeOptions="actionNext"/>
2: После изменения всех android:addTextChangedListener="@{outlet.onCapacityChange}"
в android:text="@={String.valueOf(outlet.capacity)}"
используя =
Equal Operator
так два способа связывания теперь предоставляется по умолчанию.
Java
@SerializedName("capacity")
@Expose
Long capacity = 0L;
/**
*
* @return
* The capacity
*/
@Bindable
public Long getCapacity() {
return capacity;
}
/**
*
* @param capacity
* The capacity
*/
public void setCapacity(Long capacity) {
setAtomicCapacity(capacity);
Log.e(TAG+"Capacity", "" + capacity);
notifyPropertyChanged(BR.capacity);
}
public void setAtomicCapacity(Long basic) {
this.capacity = basic;
}
XML
<EditText
android:id="@+id/outletStockCapacity"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_marginBottom="16dp"
android:inputType="number"
android:text="@={String.valueOf(outlet.capacity)}"
android:singleLine="true"
android:imeOptions="actionNext"/>
Первый работал отлично на Post Lollipop
, но не работает на Pre-Lollipop
. Это мой SimpleTextWatcher
public abstract class SimpleTextWatcher implements TextWatcher {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void afterTextChanged(Editable s) {
onTextChanged(s.toString());
}
public abstract void onTextChanged(String newValue);
}
Мой проект не будет построен из-за этого. Я не знаю почему? Я проверил нуль, инициализировал его и все. Но, это не просто строить из-за того, что