1a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet/* 2a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * Copyright (C) 2011 The Android Open Source Project 3a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * 4a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License"); 5a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * you may not use this file except in compliance with the License. 6a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * You may obtain a copy of the License at 7a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * 8a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * http://www.apache.org/licenses/LICENSE-2.0 9a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * 10a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * Unless required by applicable law or agreed to in writing, software 11a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS, 12a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * See the License for the specific language governing permissions and 14a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * limitations under the License. 15a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet */ 16a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 17a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohetpackage com.android.ide.common.rendering.api; 18a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 19a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohetimport com.android.resources.ResourceType; 20a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 21a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohetimport java.util.ArrayList; 22a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohetimport java.util.Collections; 23a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohetimport java.util.Iterator; 24a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohetimport java.util.List; 25a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 26a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet/** 27a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * A data binding item. It contain a {@link ResourceReference} to the view used to represent it. 28a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * It also contains how many items of this type the AdapterView should display. 29a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * 30a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * It can also contain an optional list of children in case the AdapterView is an 31a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * ExpandableListView. In this case, the count value is used as a repeat count for the children, 32a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * similar to {@link AdapterBinding#getRepeatCount()}. 33a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * 34a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet */ 35a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohetpublic class DataBindingItem implements Iterable<DataBindingItem> { 36a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet private final ResourceReference mReference; 37a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet private final int mCount; 38a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet private List<DataBindingItem> mChildren; 39a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 40a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public DataBindingItem(ResourceReference reference, int count) { 41a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet mReference = reference; 42a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet mCount = count; 43a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 44a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 45a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public DataBindingItem(String name, boolean platformLayout, int count) { 46a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet this(new ResourceReference(name, platformLayout), count); 47a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 48a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 49a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public DataBindingItem(String name, boolean platformLayout) { 50a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet this(name, platformLayout, 1); 51a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 52a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 53a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public DataBindingItem(String name, int count) { 54a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet this(name, false /*platformLayout*/, count); 55a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 56a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 57a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public DataBindingItem(String name) { 58a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet this(name, false /*platformLayout*/, 1); 59a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 60a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 61a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet /** 62a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * Returns the {@link ResourceReference} for the view. The {@link ResourceType} for the 63a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * referenced resource is implied to be {@link ResourceType#LAYOUT}. 64a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet */ 65a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public ResourceReference getViewReference() { 66a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet return mReference; 67a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 68a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 69a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet /** 70a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet * The repeat count for this object or the repeat count for the children if there are any. 71a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet */ 72a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public int getCount() { 73a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet return mCount; 74a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 75a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 76a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public void addChild(DataBindingItem child) { 77a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet if (mChildren == null) { 78a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet mChildren = new ArrayList<DataBindingItem>(); 79a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 80a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 81a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet mChildren.add(child); 82a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 83a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 84a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public List<DataBindingItem> getChildren() { 85a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet if (mChildren != null) { 86a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet return mChildren; 87a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 88a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 89a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet return Collections.emptyList(); 90a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 91a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet 92ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 93a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet public Iterator<DataBindingItem> iterator() { 94a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet List<DataBindingItem> list = getChildren(); 95a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet return list.iterator(); 96a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet } 97a43a67bcda2200a18879ee649287aa9ff4c46509Xavier Ducrohet} 98