12fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet/* 22fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * Copyright (C) 2011 The Android Open Source Project 32fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * 42fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License"); 52fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * you may not use this file except in compliance with the License. 62fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * You may obtain a copy of the License at 72fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * 82fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * http://www.apache.org/licenses/LICENSE-2.0 92fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * 102fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * Unless required by applicable law or agreed to in writing, software 112fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS, 122fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * See the License for the specific language governing permissions and 142fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet * limitations under the License. 152fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet */ 162fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 172fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetpackage com.android.layoutlib.bridge.impl.binding; 182fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 192fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport com.android.ide.common.rendering.api.AdapterBinding; 202fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport com.android.ide.common.rendering.api.DataBindingItem; 212fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport com.android.ide.common.rendering.api.IProjectCallback; 222fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport com.android.ide.common.rendering.api.ResourceReference; 2354d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Guptaimport com.android.util.Pair; 242fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 2554d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Guptaimport android.database.DataSetObserver; 262fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport android.view.View; 272fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport android.view.ViewGroup; 282fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport android.widget.ExpandableListAdapter; 292fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport android.widget.HeterogeneousExpandableList; 302fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 312fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport java.util.ArrayList; 322fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohetimport java.util.List; 332fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 3454d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta@SuppressWarnings("deprecation") 3554d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Guptapublic class FakeExpandableAdapter implements ExpandableListAdapter, HeterogeneousExpandableList { 3654d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta 3754d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta private final IProjectCallback mCallback; 3854d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta private final ResourceReference mAdapterRef; 3954d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta private boolean mSkipCallbackParser = false; 4054d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta 4154d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta protected final List<AdapterItem> mItems = new ArrayList<AdapterItem>(); 422fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 432fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // don't use a set because the order is important. 442fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet private final List<ResourceReference> mGroupTypes = new ArrayList<ResourceReference>(); 452fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet private final List<ResourceReference> mChildrenTypes = new ArrayList<ResourceReference>(); 462fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 472fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public FakeExpandableAdapter(ResourceReference adapterRef, AdapterBinding binding, 482fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet IProjectCallback callback) { 4954d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta mAdapterRef = adapterRef; 5054d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta mCallback = callback; 512fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 522fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet createItems(binding, binding.getItemCount(), binding.getRepeatCount(), mGroupTypes, 1); 532fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 542fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 552fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet private void createItems(Iterable<DataBindingItem> iterable, final int itemCount, 562fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet final int repeatCount, List<ResourceReference> types, int depth) { 572fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // Need an array to count for each type. 582fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // This is likely too big, but is the max it can be. 592fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet int[] typeCount = new int[itemCount]; 602fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 612fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // we put several repeating sets. 622fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet for (int r = 0 ; r < repeatCount ; r++) { 632fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // loop on the type of list items, and add however many for each type. 642fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet for (DataBindingItem dataBindingItem : iterable) { 652fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet ResourceReference viewRef = dataBindingItem.getViewReference(); 662fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet int typeIndex = types.indexOf(viewRef); 672fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet if (typeIndex == -1) { 682fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet typeIndex = types.size(); 692fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet types.add(viewRef); 702fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 712fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 722fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet List<DataBindingItem> children = dataBindingItem.getChildren(); 732fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet int count = dataBindingItem.getCount(); 742fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 752fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // if there are children, we use the count as a repeat count for the children. 762fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet if (children.size() > 0) { 772fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet count = 1; 782fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 792fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 802fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet int index = typeCount[typeIndex]; 812fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet typeCount[typeIndex] += count; 822fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 832fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet for (int k = 0 ; k < count ; k++) { 842fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet AdapterItem item = new AdapterItem(dataBindingItem, typeIndex, mItems.size(), 852fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet index++); 862fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet mItems.add(item); 872fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 882fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet if (children.size() > 0) { 892fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet createItems(dataBindingItem, depth + 1); 902fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 912fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 922fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 932fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 942fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 952fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 962fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet private void createItems(DataBindingItem item, int depth) { 972fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet if (depth == 2) { 982fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet createItems(item, item.getChildren().size(), item.getCount(), mChildrenTypes, depth); 992fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1002fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1012fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 1022fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet private AdapterItem getChildItem(int groupPosition, int childPosition) { 1032fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet AdapterItem item = mItems.get(groupPosition); 1042fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 1052fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet List<AdapterItem> children = item.getChildren(); 1062fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return children.get(childPosition); 1072fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1082fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 1092fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // ---- ExpandableListAdapter 1102fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 11146d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1122fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public int getGroupCount() { 1132fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return mItems.size(); 1142fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1152fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 11646d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1172fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public int getChildrenCount(int groupPosition) { 1182fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet AdapterItem item = mItems.get(groupPosition); 1192fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return item.getChildren().size(); 1202fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1212fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 12246d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1232fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public Object getGroup(int groupPosition) { 1242fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return mItems.get(groupPosition); 1252fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1262fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 12746d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1282fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public Object getChild(int groupPosition, int childPosition) { 1292fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return getChildItem(groupPosition, childPosition); 1302fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1312fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 13246d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1332fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 1342fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet ViewGroup parent) { 1352fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // we don't care about recycling here because we never scroll. 1362fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet AdapterItem item = mItems.get(groupPosition); 13754d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta Pair<View, Boolean> pair = AdapterHelper.getView(item, null /*parentItem*/, parent, 13854d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta mCallback, mAdapterRef, mSkipCallbackParser); 13954d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta mSkipCallbackParser = pair.getSecond(); 14054d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta return pair.getFirst(); 1412fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1422fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 14346d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1442fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public View getChildView(int groupPosition, int childPosition, boolean isLastChild, 1452fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet View convertView, ViewGroup parent) { 1462fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // we don't care about recycling here because we never scroll. 1472fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet AdapterItem parentItem = mItems.get(groupPosition); 1482fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet AdapterItem item = getChildItem(groupPosition, childPosition); 14954d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta Pair<View, Boolean> pair = AdapterHelper.getView(item, parentItem, parent, mCallback, 15054d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta mAdapterRef, mSkipCallbackParser); 15154d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta mSkipCallbackParser = pair.getSecond(); 15254d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta return pair.getFirst(); 1532fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1542fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 15546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1562fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public long getGroupId(int groupPosition) { 1572fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return groupPosition; 1582fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1592fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 16046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1612fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public long getChildId(int groupPosition, int childPosition) { 1622fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return childPosition; 1632fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1642fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 16546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1662fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public long getCombinedGroupId(long groupId) { 1672fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return groupId << 16 | 0x0000FFFF; 1682fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1692fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 17046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1712fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public long getCombinedChildId(long groupId, long childId) { 1722fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return groupId << 16 | childId; 1732fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1742fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 17546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1762fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public boolean isChildSelectable(int groupPosition, int childPosition) { 1772fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return true; 1782fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1792fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 18046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1812fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public void onGroupCollapsed(int groupPosition) { 1822fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // pass 1832fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1842fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 18546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1862fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public void onGroupExpanded(int groupPosition) { 1872fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // pass 1882fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 1892fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 19054d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta @Override 19154d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta public void registerDataSetObserver(DataSetObserver observer) { 19254d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta // pass 19354d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta } 19454d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta 19554d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta @Override 19654d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta public void unregisterDataSetObserver(DataSetObserver observer) { 19754d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta // pass 19854d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta } 19954d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta 20054d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta @Override 20154d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta public boolean hasStableIds() { 20254d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta return true; 20354d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta } 20454d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta 20554d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta @Override 20654d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta public boolean areAllItemsEnabled() { 20754d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta return true; 20854d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta } 20954d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta 21054d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta @Override 21154d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta public boolean isEmpty() { 21254d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta return mItems.isEmpty(); 21354d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta } 21454d88f7678387a6eb871ec2dccd36af4ff35b1feDeepanshu Gupta 2152fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet // ---- HeterogeneousExpandableList 2162fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 21746d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2182fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public int getChildType(int groupPosition, int childPosition) { 2192fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return getChildItem(groupPosition, childPosition).getType(); 2202fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 2212fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 22246d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2232fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public int getChildTypeCount() { 2242fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return mChildrenTypes.size(); 2252fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 2262fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 22746d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2282fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public int getGroupType(int groupPosition) { 2292fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return mItems.get(groupPosition).getType(); 2302fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 2312fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet 23246d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2332fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet public int getGroupTypeCount() { 2342fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet return mGroupTypes.size(); 2352fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet } 2362fae858db55fc6984ef923a6226b9408c37c72cbXavier Ducrohet} 237