133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
26eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
36eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport android.database.DataSetObserver;
40b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport android.widget.BaseAdapter;
522c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation;
622c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements;
7800e363213bad2720ac3952bd84ec8a9b0142354Adam Cohen-Roseimport com.xtremelabs.robolectric.internal.RealObject;
86eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
96eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport java.util.ArrayList;
106eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulzimport java.util.List;
116eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
120b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher@SuppressWarnings({"UnusedDeclaration"})
130b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher@Implements(BaseAdapter.class)
14afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williamspublic class ShadowBaseAdapter {
15800e363213bad2720ac3952bd84ec8a9b0142354Adam Cohen-Rose	@RealObject private BaseAdapter realBaseAdapter;
166eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    private final List<DataSetObserver> dataSetObservers = new ArrayList<DataSetObserver>();
17a06e532eed1152692ba432cd19fa8a08e712d8caPhil Goodwin & Rick Kawala    private boolean wasNotifyDataSetChangedCalled;
18543b80e595a9c887ee3cdc8b5073eeb2bf068efePhil Goodwin & Rick Kawala
19800e363213bad2720ac3952bd84ec8a9b0142354Adam Cohen-Rose    @Implementation
20800e363213bad2720ac3952bd84ec8a9b0142354Adam Cohen-Rose    public boolean isEmpty() {
21800e363213bad2720ac3952bd84ec8a9b0142354Adam Cohen-Rose    	return realBaseAdapter.getCount() == 0;
22800e363213bad2720ac3952bd84ec8a9b0142354Adam Cohen-Rose    }
236eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
24fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin    /**
25fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     * Just returns true
26adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams     *
27fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     * @return true
28fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     */
29de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
30a21d705bd12f5dee542471f733e37d5e33d68a2aChristian Williams & Tyler Schultz    public boolean areAllItemsEnabled() {
31a21d705bd12f5dee542471f733e37d5e33d68a2aChristian Williams & Tyler Schultz        return true;
32a21d705bd12f5dee542471f733e37d5e33d68a2aChristian Williams & Tyler Schultz    }
33a21d705bd12f5dee542471f733e37d5e33d68a2aChristian Williams & Tyler Schultz
34fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin    /**
354c1978eded4fefaae1c4118f3e8ce8ddc8dfe9f5Phil Goodwin     * Registers the observer.
3640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams     *
37fffbcf54817243f6192cf2443257d57198f1ea78Phil Goodwin     * @param observer observer
38fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     */
39de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
406eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void registerDataSetObserver(DataSetObserver observer) {
416eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        dataSetObservers.add(observer);
426eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
436eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
44fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin    /**
45fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     * Unregisters the observer if it can be found. Nothing otherwise.
4640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams     *
47fffbcf54817243f6192cf2443257d57198f1ea78Phil Goodwin     * @param observer observer
48fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     */
49de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
506eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void unregisterDataSetObserver(DataSetObserver observer) {
516eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        dataSetObservers.remove(observer);
526eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
536eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
54fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin    /**
55fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     * Notifies the registered observers
56fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     */
57de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
586eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void notifyDataSetChanged() {
59a06e532eed1152692ba432cd19fa8a08e712d8caPhil Goodwin & Rick Kawala        wasNotifyDataSetChangedCalled = true;
606eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        for (DataSetObserver dataSetObserver : dataSetObservers) {
616eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            dataSetObserver.onChanged();
626eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        }
636eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
646eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
65fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin    /**
66fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     * Notifies the registered observers
67fa51ab3a5a2a5f25dfc223e8a37d0f8002d757bfPhil Goodwin     */
68de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
696eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    public void notifyDataSetInvalidated() {
706eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        for (DataSetObserver dataSetObserver : dataSetObservers) {
716eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz            dataSetObserver.onInvalidated();
726eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz        }
736eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz    }
746eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz
75a06e532eed1152692ba432cd19fa8a08e712d8caPhil Goodwin & Rick Kawala    public void clearWasDataSetChangedCalledFlag() {
76a06e532eed1152692ba432cd19fa8a08e712d8caPhil Goodwin & Rick Kawala        wasNotifyDataSetChangedCalled = false;
77a06e532eed1152692ba432cd19fa8a08e712d8caPhil Goodwin & Rick Kawala    }
78a06e532eed1152692ba432cd19fa8a08e712d8caPhil Goodwin & Rick Kawala
79a06e532eed1152692ba432cd19fa8a08e712d8caPhil Goodwin & Rick Kawala    public boolean wasNotifyDataSetChangedCalled() {
80a06e532eed1152692ba432cd19fa8a08e712d8caPhil Goodwin & Rick Kawala        return wasNotifyDataSetChangedCalled;
81543b80e595a9c887ee3cdc8b5073eeb2bf068efePhil Goodwin & Rick Kawala    }
826eedf728138e6f79fa898ff3e31bf61c9b1151dChristian Williams & Tyler Schulz}
83