1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/* 2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2015 The Android Open Source Project 3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License"); 5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License. 6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at 7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * http://www.apache.org/licenses/LICENSE-2.0 9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * 10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software 11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS, 12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and 14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License. 15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage com.android.messaging.ui; 17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.Context; 19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.LayoutInflater; 20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.View; 21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.ViewGroup; 22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.widget.BaseExpandableListAdapter; 23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.R; 25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.media.VCardResourceEntry; 26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.media.VCardResourceEntry.VCardResourceEntryDestinationItem; 27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport java.util.List; 29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/** 31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Displays a list of expandable contact cards shown in the VCardDetailActivity. 32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */ 33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class VCardDetailAdapter extends BaseExpandableListAdapter { 34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private final List<VCardResourceEntry> mVCards; 35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private final LayoutInflater mInflater; 36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public VCardDetailAdapter(final Context context, final List<VCardResourceEntry> vCards) { 38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mVCards = vCards; 39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public Object getChild(final int groupPosition, final int childPosition) { 44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return mVCards.get(groupPosition).getContactInfo().get(childPosition); 45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public long getChildId(final int groupPosition, final int childPosition) { 49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return childPosition; 50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public View getChildView(final int groupPosition, final int childPosition, 54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final boolean isLastChild, final View convertView, final ViewGroup parent) { 55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd PersonItemView v; 56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (convertView == null) { 57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd v = instantiateView(parent); 58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } else { 59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd v = (PersonItemView) convertView; 60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final VCardResourceEntryDestinationItem item = (VCardResourceEntryDestinationItem) 63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd getChild(groupPosition, childPosition); 64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd v.bind(item.getDisplayItem()); 66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return v; 67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public int getChildrenCount(final int groupPosition) { 71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return mVCards.get(groupPosition).getContactInfo().size(); 72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public Object getGroup(final int groupPosition) { 76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return mVCards.get(groupPosition); 77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public int getGroupCount() { 81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return mVCards.size(); 82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public long getGroupId(final int groupPosition) { 86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return groupPosition; 87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public View getGroupView(final int groupPosition, final boolean isExpanded, 91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final View convertView, final ViewGroup parent) { 92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd PersonItemView v; 93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd if (convertView == null) { 94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd v = instantiateView(parent); 95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } else { 96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd v = (PersonItemView) convertView; 97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final VCardResourceEntry item = (VCardResourceEntry) getGroup(groupPosition); 100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd v.bind(item.getDisplayItem()); 101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return v; 102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public boolean isChildSelectable(final int groupPosition, final int childPosition) { 106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return true; 107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd @Override 110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd public boolean hasStableIds() { 111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return true; 112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd 114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd private PersonItemView instantiateView(final ViewGroup parent) { 115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd final PersonItemView v = (PersonItemView) mInflater.inflate(R.layout.people_list_item_view, 116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd parent, false); 117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd v.setClickable(false); 118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd return v; 119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd } 120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd} 121