diff options
Diffstat (limited to 'app/src/main/java/com/wireguard/android/databinding/BindingAdapters.java')
-rw-r--r-- | app/src/main/java/com/wireguard/android/databinding/BindingAdapters.java | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/app/src/main/java/com/wireguard/android/databinding/BindingAdapters.java b/app/src/main/java/com/wireguard/android/databinding/BindingAdapters.java index b7c44116..b3a8ae25 100644 --- a/app/src/main/java/com/wireguard/android/databinding/BindingAdapters.java +++ b/app/src/main/java/com/wireguard/android/databinding/BindingAdapters.java @@ -13,10 +13,10 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.InputFilter; import android.widget.LinearLayout; -import android.widget.ListView; import android.widget.TextView; import com.wireguard.android.R; +import com.wireguard.android.databinding.ObservableKeyedRecyclerViewAdapter.RowConfigurationHandler; import com.wireguard.android.util.ObservableKeyedList; import com.wireguard.android.widget.ToggleSwitch; import com.wireguard.android.widget.ToggleSwitch.OnBeforeCheckedChangeListener; @@ -67,37 +67,11 @@ public final class BindingAdapters { listener.setList(newList); } - @BindingAdapter({"items", "layout"}) - public static <K, E extends Keyed<? extends K>> - void setItems(final ListView view, - final ObservableKeyedList<K, E> oldList, final int oldLayoutId, - final ObservableKeyedList<K, E> newList, final int newLayoutId) { - if (oldList == newList && oldLayoutId == newLayoutId) - return; - // The ListAdapter interface is not generic, so this cannot be checked. - @SuppressWarnings("unchecked") ObservableKeyedListAdapter<K, E> adapter = - (ObservableKeyedListAdapter<K, E>) view.getAdapter(); - // If the layout changes, any existing adapter must be replaced. - if (adapter != null && oldList != null && oldLayoutId != newLayoutId) { - adapter.setList(null); - adapter = null; - } - // Avoid setting an adapter when there is no new list or layout. - if (newList == null || newLayoutId == 0) - return; - if (adapter == null) { - adapter = new ObservableKeyedListAdapter<>(view.getContext(), newLayoutId, newList); - view.setAdapter(adapter); - } - // Either the list changed, or this is an entirely new listener because the layout changed. - adapter.setList(newList); - } - - @BindingAdapter({"items", "layout"}) + @BindingAdapter(requireAll = false, value = {"items", "layout", "configurationHandler"}) public static <K, E extends Keyed<? extends K>> void setItems(final RecyclerView view, - final ObservableKeyedList<K, E> oldList, final int oldLayoutId, - final ObservableKeyedList<K, E> newList, final int newLayoutId) { + final ObservableKeyedList<K, E> oldList, final int oldLayoutId, final RowConfigurationHandler oldRowConfigurationHandler, + final ObservableKeyedList<K, E> newList, final int newLayoutId, final RowConfigurationHandler newRowConfigurationHandler) { if (view.getLayoutManager() == null) view.setLayoutManager(new LinearLayoutManager(view.getContext(), RecyclerView.VERTICAL, false)); @@ -118,6 +92,8 @@ public final class BindingAdapters { adapter = new ObservableKeyedRecyclerViewAdapter<>(view.getContext(), newLayoutId, newList); view.setAdapter(adapter); } + + adapter.setRowConfigurationHandler(newRowConfigurationHandler); // Either the list changed, or this is an entirely new listener because the layout changed. adapter.setList(newList); } |