AbstractItemHierarchy.java revision 05acfbb2e7c7f2c992b530b98f8a9333ec6b17f0
1960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam/* 2960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * Copyright (C) 2015 The Android Open Source Project 3960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * 4960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License"); 5960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * you may not use this file except in compliance with the License. 6960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * You may obtain a copy of the License at 7960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * 8960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * http://www.apache.org/licenses/LICENSE-2.0 9960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * 10960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * Unless required by applicable law or agreed to in writing, software 11960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS, 12960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * See the License for the specific language governing permissions and 14960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * limitations under the License. 15960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam */ 16960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 17960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lampackage com.android.setupwizardlib.items; 18960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 19960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lamimport android.content.Context; 20960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lamimport android.content.res.TypedArray; 21960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lamimport android.util.AttributeSet; 22960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 23960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lamimport com.android.setupwizardlib.R; 24960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 25960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lamimport java.util.ArrayList; 26960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 27960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam/** 28960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam * An abstract item hierarchy; provides default implementation for ID and observers. 29960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam */ 30960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lampublic abstract class AbstractItemHierarchy implements ItemHierarchy { 31960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 32960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam private ArrayList<Observer> mObservers = new ArrayList<>(); 33960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam private int mId = 0; 34960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 35960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam public AbstractItemHierarchy() { 36960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam } 37960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 38960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam public AbstractItemHierarchy(Context context, AttributeSet attrs) { 39960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SuwAbstractItem); 40960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam mId = a.getResourceId(R.styleable.SuwAbstractItem_android_id, 0); 41960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam a.recycle(); 42960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam } 43960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 44960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam public void setId(int id) { 45960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam mId = id; 46960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam } 47960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 48960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam public int getId() { 49960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam return mId; 50960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam } 51960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 5205acfbb2e7c7f2c992b530b98f8a9333ec6b17f0Ajay Nadathur public int getViewId() { 5305acfbb2e7c7f2c992b530b98f8a9333ec6b17f0Ajay Nadathur return getId(); 5405acfbb2e7c7f2c992b530b98f8a9333ec6b17f0Ajay Nadathur } 5505acfbb2e7c7f2c992b530b98f8a9333ec6b17f0Ajay Nadathur 56960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam @Override 57960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam public void registerObserver(Observer observer) { 58960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam mObservers.add(observer); 59960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam } 60960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 61960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam @Override 62960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam public void unregisterObserver(Observer observer) { 63960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam mObservers.remove(observer); 64960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam } 65960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam 66960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam public void notifyChanged() { 67960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam for (Observer observer : mObservers) { 68960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam observer.onChanged(this); 69960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam } 70960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam } 71960c0ea0b1d36904beef0f01715dd43a211e88caMaurice Lam} 72