1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/* 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Copyright (C) 2011 The Android Open Source Project 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * you may not use this file except in compliance with the License. 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * You may obtain a copy of the License at 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Unless required by applicable law or agreed to in writing, software 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * See the License for the specific language governing permissions and 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * limitations under the License. 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipackage com.android.layoutlib.bridge.impl.binding; 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.ide.common.rendering.api.AdapterBinding; 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.ide.common.rendering.api.DataBindingItem; 2137dbb8b7f3c069196040eed3a03006647db7fa5bDeepanshu Guptaimport com.android.ide.common.rendering.api.LayoutlibCallback; 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.ide.common.rendering.api.ResourceReference; 23e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Guptaimport com.android.util.Pair; 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 25e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Guptaimport android.database.DataSetObserver; 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.view.View; 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.view.ViewGroup; 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.widget.ExpandableListAdapter; 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport android.widget.HeterogeneousExpandableList; 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport java.util.ArrayList; 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport java.util.List; 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 34e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta@SuppressWarnings("deprecation") 35e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Guptapublic class FakeExpandableAdapter implements ExpandableListAdapter, HeterogeneousExpandableList { 36e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta 3737dbb8b7f3c069196040eed3a03006647db7fa5bDeepanshu Gupta private final LayoutlibCallback mCallback; 38e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta private final ResourceReference mAdapterRef; 39e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta private boolean mSkipCallbackParser = false; 40e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta 41e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta protected final List<AdapterItem> mItems = new ArrayList<AdapterItem>(); 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // don't use a set because the order is important. 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private final List<ResourceReference> mGroupTypes = new ArrayList<ResourceReference>(); 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private final List<ResourceReference> mChildrenTypes = new ArrayList<ResourceReference>(); 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public FakeExpandableAdapter(ResourceReference adapterRef, AdapterBinding binding, 4837dbb8b7f3c069196040eed3a03006647db7fa5bDeepanshu Gupta LayoutlibCallback callback) { 49e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta mAdapterRef = adapterRef; 50e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta mCallback = callback; 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski createItems(binding, binding.getItemCount(), binding.getRepeatCount(), mGroupTypes, 1); 53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private void createItems(Iterable<DataBindingItem> iterable, final int itemCount, 56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski final int repeatCount, List<ResourceReference> types, int depth) { 57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // Need an array to count for each type. 58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // This is likely too big, but is the max it can be. 59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int[] typeCount = new int[itemCount]; 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // we put several repeating sets. 62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski for (int r = 0 ; r < repeatCount ; r++) { 63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // loop on the type of list items, and add however many for each type. 64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski for (DataBindingItem dataBindingItem : iterable) { 65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ResourceReference viewRef = dataBindingItem.getViewReference(); 66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int typeIndex = types.indexOf(viewRef); 67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (typeIndex == -1) { 68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski typeIndex = types.size(); 69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski types.add(viewRef); 70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski List<DataBindingItem> children = dataBindingItem.getChildren(); 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int count = dataBindingItem.getCount(); 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // if there are children, we use the count as a repeat count for the children. 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (children.size() > 0) { 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski count = 1; 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int index = typeCount[typeIndex]; 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski typeCount[typeIndex] += count; 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski for (int k = 0 ; k < count ; k++) { 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski AdapterItem item = new AdapterItem(dataBindingItem, typeIndex, mItems.size(), 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski index++); 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski mItems.add(item); 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (children.size() > 0) { 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski createItems(dataBindingItem, depth + 1); 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private void createItems(DataBindingItem item, int depth) { 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (depth == 2) { 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski createItems(item, item.getChildren().size(), item.getCount(), mChildrenTypes, depth); 99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 102282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private AdapterItem getChildItem(int groupPosition, int childPosition) { 103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski AdapterItem item = mItems.get(groupPosition); 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski List<AdapterItem> children = item.getChildren(); 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return children.get(childPosition); 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // ---- ExpandableListAdapter 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getGroupCount() { 113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return mItems.size(); 114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getChildrenCount(int groupPosition) { 118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski AdapterItem item = mItems.get(groupPosition); 119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return item.getChildren().size(); 120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 121282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 122282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 123282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public Object getGroup(int groupPosition) { 124282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return mItems.get(groupPosition); 125282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 126282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 127282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 128282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public Object getChild(int groupPosition, int childPosition) { 129282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return getChildItem(groupPosition, childPosition); 130282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 131282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 132282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 133282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 134282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ViewGroup parent) { 135282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // we don't care about recycling here because we never scroll. 136282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski AdapterItem item = mItems.get(groupPosition); 137e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta Pair<View, Boolean> pair = AdapterHelper.getView(item, null /*parentItem*/, parent, 138e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta mCallback, mAdapterRef, mSkipCallbackParser); 139e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta mSkipCallbackParser = pair.getSecond(); 140e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta return pair.getFirst(); 141282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 142282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 143282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 144282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public View getChildView(int groupPosition, int childPosition, boolean isLastChild, 145282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski View convertView, ViewGroup parent) { 146282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // we don't care about recycling here because we never scroll. 147282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski AdapterItem parentItem = mItems.get(groupPosition); 148282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski AdapterItem item = getChildItem(groupPosition, childPosition); 149e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta Pair<View, Boolean> pair = AdapterHelper.getView(item, parentItem, parent, mCallback, 150e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta mAdapterRef, mSkipCallbackParser); 151e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta mSkipCallbackParser = pair.getSecond(); 152e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta return pair.getFirst(); 153282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 154282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 155282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 156282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public long getGroupId(int groupPosition) { 157282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return groupPosition; 158282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 159282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 160282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 161282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public long getChildId(int groupPosition, int childPosition) { 162282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return childPosition; 163282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 164282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 165282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 166282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public long getCombinedGroupId(long groupId) { 167282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return groupId << 16 | 0x0000FFFF; 168282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 169282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 170282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 171282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public long getCombinedChildId(long groupId, long childId) { 172282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return groupId << 16 | childId; 173282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 174282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 175282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 176282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public boolean isChildSelectable(int groupPosition, int childPosition) { 177282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return true; 178282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 179282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 180282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 181282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public void onGroupCollapsed(int groupPosition) { 182282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // pass 183282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 184282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 185282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 186282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public void onGroupExpanded(int groupPosition) { 187282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // pass 188282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 189282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 190e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta @Override 191e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta public void registerDataSetObserver(DataSetObserver observer) { 192e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta // pass 193e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta } 194e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta 195e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta @Override 196e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta public void unregisterDataSetObserver(DataSetObserver observer) { 197e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta // pass 198e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta } 199e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta 200e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta @Override 201e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta public boolean hasStableIds() { 202e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta return true; 203e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta } 204e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta 205e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta @Override 206e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta public boolean areAllItemsEnabled() { 207e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta return true; 208e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta } 209e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta 210e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta @Override 211e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta public boolean isEmpty() { 212e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta return mItems.isEmpty(); 213e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta } 214e98d2cb65c0915d5278c593d14ff4bdc778557f7Deepanshu Gupta 215282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // ---- HeterogeneousExpandableList 216282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 217282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 218282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getChildType(int groupPosition, int childPosition) { 219282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return getChildItem(groupPosition, childPosition).getType(); 220282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 221282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 222282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 223282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getChildTypeCount() { 224282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return mChildrenTypes.size(); 225282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 226282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 227282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 228282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getGroupType(int groupPosition) { 229282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return mItems.get(groupPosition).getType(); 230282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 231282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 232282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @Override 233282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public int getGroupTypeCount() { 234282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return mGroupTypes.size(); 235282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 236282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 237