android adapter排序,Android BindingAdapter执行顺序?
我需要了解數據綁定庫如何確定其BindingAdapter的執行順序.如果我有一個View的兩個BindingAdapter,如果View有兩個屬性對應于那些BindingAdapters,它將如何確定首先執行哪個適配器?我問,因為執行順序在我的情況下很重要.
我有以下BindingAdapter / s:
public class SpinnerBindingAdapter {
@BindingAdapter(value = {"entries"})
public static void setEntries(Spinner spinner,List extends SpinnerItem> spinnerItems) {
for (int i = 0; i < spinnerItems.size(); i++) {
spinnerItems.get(i).setIndex(i);
}
ArrayAdapter extends SpinnerItem> adapter =
new ArrayAdapter<>(spinner.getContext(),R.layout.spinner_item,spinnerItems);
spinner.setAdapter(adapter);
}
@InverseBindingAdapter(attribute = "selectedItem",event = "selectedItemAttrChanged")
public static Object getSelectedItem(Spinner spinner) {
Object selectedItem = spinner.getSelectedItem();
return selectedItem;
}
@BindingAdapter(value = {"selectedItem"})
public static void setSelectedItem(Spinner spinner,SpinnerItem spinnerItem) {
if (spinner.getAdapter() == null) {
return;
}
// Other code omitted for simplicity
}
@BindingAdapter(value = {"selectedItemAttrChanged"},requireAll = false)
public static void setOnItemSelectedListener(Spinner spinner,final InverseBindingListener selectedItemChange) {
if (selectedItemChange == null) {
spinner.setOnItemSelectedListener(null);
} else {
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent,View view,int position,long id) {
selectedItemChange.onChange();
}
@Override
public void onNothingSelected(AdapterView> parent) {
}
});
}
}
}
這是我如何填充Spinner并設置選擇:
android:id="@+id/spinner_system_activity_edit_tracker_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill_horizontal"
app:entries="@{DatabaseModel.queryForAll()}"
app:selectedItem="@={object.selectedItem}"/>
DatabaseModel.queryForAll是一個靜態方法,它查詢數據庫并返回一個對象列表,然后將其提供給BindingAdapter. BindingAdapter獲取此列表,使用索引更新其每個項目,并將其設置為微調器的適配器.
無論出于何種原因,始終首先調用“setSelectedItem”BindingAdapter.這是不可取的,因為我需要首先初始化條目.如果先未初始化,則首次調用setSelectedItem時,spinner.getAdapter()將為null.這意味著以前保存的選擇將無法恢復.
總結
以上是生活随笔為你收集整理的android adapter排序,Android BindingAdapter执行顺序?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word2html文档,Word2HTM
- 下一篇: HTML图片瓦片,HTML5 可扩展瓦片