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