aboutsummaryrefslogtreecommitdiffstats
path: root/layoutlib_api/src
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2011-04-05 19:24:38 -0700
committerXavier Ducrohet <xav@android.com>2011-04-05 19:24:38 -0700
commita43a67bcda2200a18879ee649287aa9ff4c46509 (patch)
treee4459a662b55e463afc936d5fee9f8d09b209cf7 /layoutlib_api/src
parentfe0dd4c74297e3902d880dd6f981a2f8784e4973 (diff)
downloadsdk-a43a67bcda2200a18879ee649287aa9ff4c46509.zip
sdk-a43a67bcda2200a18879ee649287aa9ff4c46509.tar.gz
sdk-a43a67bcda2200a18879ee649287aa9ff4c46509.tar.bz2
New LayoutLib API to handle data binding in ExpandableListView.
Change-Id: Ic59acce7485887b4efde76697a85848e6bf91a97
Diffstat (limited to 'layoutlib_api/src')
-rw-r--r--layoutlib_api/src/com/android/ide/common/rendering/api/AdapterBinding.java40
-rw-r--r--layoutlib_api/src/com/android/ide/common/rendering/api/DataBindingItem.java96
-rw-r--r--layoutlib_api/src/com/android/ide/common/rendering/api/ResourceReference.java1
3 files changed, 107 insertions, 30 deletions
diff --git a/layoutlib_api/src/com/android/ide/common/rendering/api/AdapterBinding.java b/layoutlib_api/src/com/android/ide/common/rendering/api/AdapterBinding.java
index 52fbdcb..9481246 100644
--- a/layoutlib_api/src/com/android/ide/common/rendering/api/AdapterBinding.java
+++ b/layoutlib_api/src/com/android/ide/common/rendering/api/AdapterBinding.java
@@ -17,42 +17,18 @@
package com.android.ide.common.rendering.api;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
/**
* Describe the content of the dynamic android.widget.Adapter used to fill
* android.widget.AdapterView
*/
-public class AdapterBinding {
-
- /**
- * An AdapterItemReference. On top of being a {@link ResourceReference}, it contains how many
- * items of this type the data binding should display.
- */
- public static class AdapterItemReference extends ResourceReference {
- private final int mCount;
-
- public AdapterItemReference(String name, boolean platformLayout, int count) {
- super(name, platformLayout);
- mCount = count;
- }
-
- public AdapterItemReference(String name, boolean platformLayout) {
- this(name, platformLayout, 1);
- }
-
- public AdapterItemReference(String name) {
- this(name, false /*platformLayout*/, 1);
- }
-
- public int getCount() {
- return mCount;
- }
- }
+public class AdapterBinding implements Iterable<DataBindingItem> {
private final int mRepeatCount;
private final List<ResourceReference> mHeaders = new ArrayList<ResourceReference>();
- private final List<AdapterItemReference> mItems = new ArrayList<AdapterItemReference>();
+ private final List<DataBindingItem> mItems = new ArrayList<DataBindingItem>();
private final List<ResourceReference> mFooters = new ArrayList<ResourceReference>();
public AdapterBinding(int repeatCount) {
@@ -75,15 +51,15 @@ public class AdapterBinding {
return mHeaders.get(index);
}
- public void addItem(AdapterItemReference itemInfo) {
- mItems.add(itemInfo);
+ public void addItem(DataBindingItem item) {
+ mItems.add(item);
}
public int getItemCount() {
return mItems.size();
}
- public AdapterItemReference getItemAt(int index) {
+ public DataBindingItem getItemAt(int index) {
return mItems.get(index);
}
@@ -98,4 +74,8 @@ public class AdapterBinding {
public ResourceReference getFooterAt(int index) {
return mFooters.get(index);
}
+
+ public Iterator<DataBindingItem> iterator() {
+ return mItems.iterator();
+ }
}
diff --git a/layoutlib_api/src/com/android/ide/common/rendering/api/DataBindingItem.java b/layoutlib_api/src/com/android/ide/common/rendering/api/DataBindingItem.java
new file mode 100644
index 0000000..93569bd
--- /dev/null
+++ b/layoutlib_api/src/com/android/ide/common/rendering/api/DataBindingItem.java
@@ -0,0 +1,96 @@
+/*
+ * 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();
+ }
+
+ public Iterator<DataBindingItem> iterator() {
+ List<DataBindingItem> list = getChildren();
+ return list.iterator();
+ }
+}
diff --git a/layoutlib_api/src/com/android/ide/common/rendering/api/ResourceReference.java b/layoutlib_api/src/com/android/ide/common/rendering/api/ResourceReference.java
index 5659b54..f22f51e 100644
--- a/layoutlib_api/src/com/android/ide/common/rendering/api/ResourceReference.java
+++ b/layoutlib_api/src/com/android/ide/common/rendering/api/ResourceReference.java
@@ -19,6 +19,7 @@ package com.android.ide.common.rendering.api;
/**
* A resource reference. This contains the String ID of the resource and whether this is a framework
* reference.
+ * This is an immutable class.
*
*/
public class ResourceReference {