diff options
author | Samuel Holland <samuel@sholland.org> | 2017-07-29 06:09:55 -0500 |
---|---|---|
committer | Samuel Holland <samuel@sholland.org> | 2017-07-29 06:09:55 -0500 |
commit | 7ceafaf2bb57cbfae7f724a9fe0c07ae4faff415 (patch) | |
tree | 5a74c80dd665f9854a16b4313c32bd913a1b8959 /app/src/main/java/com/wireguard/android/BindingAdapters.java | |
parent | 85f1d4f1d3554be5c8103cacfe7121145d90c90c (diff) |
ProfileList: Add minimal activity
For now, it simply reads the files in the app's data directory with
file names ending in ".conf" and displays them in a list.
This includes the generic list data binding setup for future use.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/BindingAdapters.java')
-rw-r--r-- | app/src/main/java/com/wireguard/android/BindingAdapters.java | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/app/src/main/java/com/wireguard/android/BindingAdapters.java b/app/src/main/java/com/wireguard/android/BindingAdapters.java new file mode 100644 index 00000000..aa5b8c1e --- /dev/null +++ b/app/src/main/java/com/wireguard/android/BindingAdapters.java @@ -0,0 +1,38 @@ +package com.wireguard.android; + +import android.databinding.BindingAdapter; +import android.databinding.ObservableList; +import android.widget.ListView; + +/** + * Static methods for use by generated code in the Android data binding library. + */ + +public final class BindingAdapters { + @BindingAdapter({"items", "layout"}) + public static <T> void listBinding(ListView view, ObservableList<T> oldList, int oldLayoutId, + ObservableList<T> newList, int newLayoutId) { + // Remove any existing binding when there is no new list. + if (newList == null) { + view.setAdapter(null); + return; + } + // The ListAdapter interface is not generic, so this cannot be checked. + @SuppressWarnings("unchecked") + ObservableListAdapter<T> adapter = (ObservableListAdapter<T>) view.getAdapter(); + // If the layout changes, any existing adapter must be replaced. + if (newLayoutId != oldLayoutId) + adapter = null; + // Add a new binding if there was none, or if it must be replaced due to a layout change. + if (adapter == null) { + adapter = new ObservableListAdapter<>(view.getContext(), newLayoutId, newList); + view.setAdapter(adapter); + } else if (newList != oldList) { + // Changing the list only requires modifying the existing adapter. + adapter.setList(newList); + } + } + + private BindingAdapters() { + } +} |