ADD week 5
This commit is contained in:
		| @@ -0,0 +1,93 @@ | ||||
| package androidx.constraintlayout.widget; | ||||
|  | ||||
| import android.util.SparseIntArray; | ||||
| import java.lang.ref.WeakReference; | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.Iterator; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class SharedValues { | ||||
|     public static final int UNSET = -1; | ||||
|     private SparseIntArray mValues = new SparseIntArray(); | ||||
|     private HashMap<Integer, HashSet<WeakReference<SharedValuesListener>>> mValuesListeners = new HashMap<>(); | ||||
|  | ||||
|     public interface SharedValuesListener { | ||||
|         void onNewValue(int key, int newValue, int oldValue); | ||||
|     } | ||||
|  | ||||
|     public void addListener(int key, SharedValuesListener listener) { | ||||
|         HashSet<WeakReference<SharedValuesListener>> hashSet = this.mValuesListeners.get(Integer.valueOf(key)); | ||||
|         if (hashSet == null) { | ||||
|             hashSet = new HashSet<>(); | ||||
|             this.mValuesListeners.put(Integer.valueOf(key), hashSet); | ||||
|         } | ||||
|         hashSet.add(new WeakReference<>(listener)); | ||||
|     } | ||||
|  | ||||
|     public void removeListener(int key, SharedValuesListener listener) { | ||||
|         HashSet<WeakReference<SharedValuesListener>> hashSet = this.mValuesListeners.get(Integer.valueOf(key)); | ||||
|         if (hashSet == null) { | ||||
|             return; | ||||
|         } | ||||
|         ArrayList arrayList = new ArrayList(); | ||||
|         Iterator<WeakReference<SharedValuesListener>> it = hashSet.iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             WeakReference<SharedValuesListener> next = it.next(); | ||||
|             SharedValuesListener sharedValuesListener = next.get(); | ||||
|             if (sharedValuesListener == null || sharedValuesListener == listener) { | ||||
|                 arrayList.add(next); | ||||
|             } | ||||
|         } | ||||
|         hashSet.removeAll(arrayList); | ||||
|     } | ||||
|  | ||||
|     public void removeListener(SharedValuesListener listener) { | ||||
|         Iterator<Integer> it = this.mValuesListeners.keySet().iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             removeListener(it.next().intValue(), listener); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void clearListeners() { | ||||
|         this.mValuesListeners.clear(); | ||||
|     } | ||||
|  | ||||
|     public int getValue(int key) { | ||||
|         return this.mValues.get(key, -1); | ||||
|     } | ||||
|  | ||||
|     public void fireNewValue(int key, int value) { | ||||
|         int i = this.mValues.get(key, -1); | ||||
|         if (i == value) { | ||||
|             return; | ||||
|         } | ||||
|         this.mValues.put(key, value); | ||||
|         HashSet<WeakReference<SharedValuesListener>> hashSet = this.mValuesListeners.get(Integer.valueOf(key)); | ||||
|         if (hashSet == null) { | ||||
|             return; | ||||
|         } | ||||
|         Iterator<WeakReference<SharedValuesListener>> it = hashSet.iterator(); | ||||
|         boolean z = false; | ||||
|         while (it.hasNext()) { | ||||
|             SharedValuesListener sharedValuesListener = it.next().get(); | ||||
|             if (sharedValuesListener != null) { | ||||
|                 sharedValuesListener.onNewValue(key, value, i); | ||||
|             } else { | ||||
|                 z = true; | ||||
|             } | ||||
|         } | ||||
|         if (z) { | ||||
|             ArrayList arrayList = new ArrayList(); | ||||
|             Iterator<WeakReference<SharedValuesListener>> it2 = hashSet.iterator(); | ||||
|             while (it2.hasNext()) { | ||||
|                 WeakReference<SharedValuesListener> next = it2.next(); | ||||
|                 if (next.get() == null) { | ||||
|                     arrayList.add(next); | ||||
|                 } | ||||
|             } | ||||
|             hashSet.removeAll(arrayList); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user