diff options
Diffstat (limited to 'app/src/main/java/com/wireguard')
-rw-r--r-- | app/src/main/java/com/wireguard/android/BindingAdapters.java | 28 | ||||
-rw-r--r-- | app/src/main/java/com/wireguard/android/ObservableArrayMapAdapter.java | 92 |
2 files changed, 0 insertions, 120 deletions
diff --git a/app/src/main/java/com/wireguard/android/BindingAdapters.java b/app/src/main/java/com/wireguard/android/BindingAdapters.java index 7e93c228..e3df7bb4 100644 --- a/app/src/main/java/com/wireguard/android/BindingAdapters.java +++ b/app/src/main/java/com/wireguard/android/BindingAdapters.java @@ -15,34 +15,6 @@ import android.widget.TextView; @SuppressWarnings("unused") public final class BindingAdapters { @BindingAdapter({"items", "layout"}) - public static <K, V> void arrayMapBinding(final ListView view, - final ObservableArrayMap<K, V> oldMap, - final int oldLayoutId, - final ObservableArrayMap<K, V> newMap, - final int newLayoutId) { - // Remove any existing binding when there is no new map. - if (newMap == null) { - view.setAdapter(null); - return; - } - // The ListAdapter interface is not generic, so this cannot be checked. - @SuppressWarnings("unchecked") - ObservableArrayMapAdapter<K, V> adapter = - (ObservableArrayMapAdapter<K, V>) 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 ObservableArrayMapAdapter<>(view.getContext(), newLayoutId, newMap); - view.setAdapter(adapter); - } else if (newMap != oldMap) { - // Changing the list only requires modifying the existing adapter. - adapter.setMap(newMap); - } - } - - @BindingAdapter({"items", "layout"}) public static <T> void listBinding(final ListView view, final ObservableList<T> oldList, final int oldLayoutId, final ObservableList<T> newList, final int newLayoutId) { diff --git a/app/src/main/java/com/wireguard/android/ObservableArrayMapAdapter.java b/app/src/main/java/com/wireguard/android/ObservableArrayMapAdapter.java deleted file mode 100644 index dd3a380f..00000000 --- a/app/src/main/java/com/wireguard/android/ObservableArrayMapAdapter.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.wireguard.android; - -import android.content.Context; -import android.databinding.DataBindingUtil; -import android.databinding.ObservableArrayMap; -import android.databinding.ObservableMap; -import android.databinding.ViewDataBinding; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ListAdapter; - -import java.lang.ref.WeakReference; - -/** - * A generic ListAdapter backed by an ObservableArrayMap. - */ - -class ObservableArrayMapAdapter<K, V> extends BaseAdapter implements ListAdapter { - private final int layoutId; - private final LayoutInflater layoutInflater; - private ObservableArrayMap<K, V> map; - private final OnMapChangedCallback<K, V> callback = new OnMapChangedCallback<>(this); - - ObservableArrayMapAdapter(final Context context, final int layoutId, - final ObservableArrayMap<K, V> map) { - super(); - layoutInflater = LayoutInflater.from(context); - this.layoutId = layoutId; - setMap(map); - } - - @Override - public int getCount() { - return map != null ? map.size() : 0; - } - - @Override - public V getItem(final int position) { - return map != null ? map.valueAt(position) : null; - } - - @Override - public long getItemId(final int position) { - return getItem(position) != null ? getItem(position).hashCode() : -1; - } - - @Override - public View getView(final int position, final View convertView, final ViewGroup parent) { - ViewDataBinding binding = DataBindingUtil.getBinding(convertView); - if (binding == null) - binding = DataBindingUtil.inflate(layoutInflater, layoutId, parent, false); - binding.setVariable(BR.item, getItem(position)); - binding.executePendingBindings(); - return binding.getRoot(); - } - - @Override - public boolean hasStableIds() { - return true; - } - - public void setMap(final ObservableArrayMap<K, V> newMap) { - if (map != null) - map.removeOnMapChangedCallback(callback); - map = newMap; - if (map != null) { - map.addOnMapChangedCallback(callback); - } - } - - private static class OnMapChangedCallback<K, V> - extends ObservableMap.OnMapChangedCallback<ObservableMap<K, V>, K, V> { - - private final WeakReference<ObservableArrayMapAdapter<K, V>> weakAdapter; - - private OnMapChangedCallback(final ObservableArrayMapAdapter<K, V> adapter) { - super(); - weakAdapter = new WeakReference<>(adapter); - } - - @Override - public void onMapChanged(final ObservableMap<K, V> sender, final K key) { - final ObservableArrayMapAdapter<K, V> adapter = weakAdapter.get(); - if (adapter != null) - adapter.notifyDataSetChanged(); - else - sender.removeOnMapChangedCallback(this); - } - } -} |