/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.ide.common.rendering.api; import com.android.resources.ResourceType; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; /** * A data binding item. It contain a {@link ResourceReference} to the view used to represent it. * It also contains how many items of this type the AdapterView should display. * * It can also contain an optional list of children in case the AdapterView is an * ExpandableListView. In this case, the count value is used as a repeat count for the children, * similar to {@link AdapterBinding#getRepeatCount()}. * */ public class DataBindingItem implements Iterable<DataBindingItem> { private final ResourceReference mReference; private final int mCount; private List<DataBindingItem> mChildren; public DataBindingItem(ResourceReference reference, int count) { mReference = reference; mCount = count; } public DataBindingItem(String name, boolean platformLayout, int count) { this(new ResourceReference(name, platformLayout), count); } public DataBindingItem(String name, boolean platformLayout) { this(name, platformLayout, 1); } public DataBindingItem(String name, int count) { this(name, false /*platformLayout*/, count); } public DataBindingItem(String name) { this(name, false /*platformLayout*/, 1); } /** * Returns the {@link ResourceReference} for the view. The {@link ResourceType} for the * referenced resource is implied to be {@link ResourceType#LAYOUT}. */ public ResourceReference getViewReference() { return mReference; } /** * The repeat count for this object or the repeat count for the children if there are any. */ public int getCount() { return mCount; } public void addChild(DataBindingItem child) { if (mChildren == null) { mChildren = new ArrayList<DataBindingItem>(); } mChildren.add(child); } public List<DataBindingItem> getChildren() { if (mChildren != null) { return mChildren; } return Collections.emptyList(); } @Override public Iterator<DataBindingItem> iterator() { List<DataBindingItem> list = getChildren(); return list.iterator(); } }