diff options
Diffstat (limited to 'android/3rd_party/HoloEverywhere/library/src/org/holoeverywhere/widget/SimpleExpandableListAdapter.java')
-rw-r--r-- | android/3rd_party/HoloEverywhere/library/src/org/holoeverywhere/widget/SimpleExpandableListAdapter.java | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/android/3rd_party/HoloEverywhere/library/src/org/holoeverywhere/widget/SimpleExpandableListAdapter.java b/android/3rd_party/HoloEverywhere/library/src/org/holoeverywhere/widget/SimpleExpandableListAdapter.java new file mode 100644 index 0000000000..b23c516464 --- /dev/null +++ b/android/3rd_party/HoloEverywhere/library/src/org/holoeverywhere/widget/SimpleExpandableListAdapter.java @@ -0,0 +1,149 @@ + +package org.holoeverywhere.widget; + +import java.util.List; +import java.util.Map; + +import org.holoeverywhere.LayoutInflater; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; + +public class SimpleExpandableListAdapter extends BaseExpandableListAdapter { + private List<? extends List<? extends Map<String, ?>>> mChildData; + private String[] mChildFrom; + private int mChildLayout; + private int[] mChildTo; + private int mCollapsedGroupLayout; + private int mExpandedGroupLayout; + private List<? extends Map<String, ?>> mGroupData; + private String[] mGroupFrom; + private int[] mGroupTo; + private LayoutInflater mInflater; + private int mLastChildLayout; + + public SimpleExpandableListAdapter(Context context, + List<? extends Map<String, ?>> groupData, int expandedGroupLayout, + int collapsedGroupLayout, String[] groupFrom, int[] groupTo, + List<? extends List<? extends Map<String, ?>>> childData, + int childLayout, int lastChildLayout, String[] childFrom, + int[] childTo) { + mGroupData = groupData; + mExpandedGroupLayout = expandedGroupLayout; + mCollapsedGroupLayout = collapsedGroupLayout; + mGroupFrom = groupFrom; + mGroupTo = groupTo; + mChildData = childData; + mChildLayout = childLayout; + mLastChildLayout = lastChildLayout; + mChildFrom = childFrom; + mChildTo = childTo; + mInflater = LayoutInflater.from(context); + } + + public SimpleExpandableListAdapter(Context context, + List<? extends Map<String, ?>> groupData, int expandedGroupLayout, + int collapsedGroupLayout, String[] groupFrom, int[] groupTo, + List<? extends List<? extends Map<String, ?>>> childData, + int childLayout, String[] childFrom, int[] childTo) { + this(context, groupData, expandedGroupLayout, collapsedGroupLayout, + groupFrom, groupTo, childData, childLayout, childLayout, + childFrom, childTo); + } + + public SimpleExpandableListAdapter(Context context, + List<? extends Map<String, ?>> groupData, int groupLayout, + String[] groupFrom, int[] groupTo, + List<? extends List<? extends Map<String, ?>>> childData, + int childLayout, String[] childFrom, int[] childTo) { + this(context, groupData, groupLayout, groupLayout, groupFrom, groupTo, childData, + childLayout, childLayout, childFrom, childTo); + } + + private void bindView(View view, Map<String, ?> data, String[] from, int[] to) { + int len = to.length; + + for (int i = 0; i < len; i++) { + TextView v = (TextView) view.findViewById(to[i]); + if (v != null) { + v.setText((String) data.get(from[i])); + } + } + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return mChildData.get(groupPosition).get(childPosition); + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public int getChildrenCount(int groupPosition) { + return mChildData.get(groupPosition).size(); + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, + View convertView, ViewGroup parent) { + View v; + if (convertView == null) { + v = newChildView(isLastChild, parent); + } else { + v = convertView; + } + bindView(v, mChildData.get(groupPosition).get(childPosition), mChildFrom, mChildTo); + return v; + } + + @Override + public Object getGroup(int groupPosition) { + return mGroupData.get(groupPosition); + } + + @Override + public int getGroupCount() { + return mGroupData.size(); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, + ViewGroup parent) { + View v; + if (convertView == null) { + v = newGroupView(isExpanded, parent); + } else { + v = convertView; + } + bindView(v, mGroupData.get(groupPosition), mGroupFrom, mGroupTo); + return v; + } + + @Override + public boolean hasStableIds() { + return true; + } + + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + public View newChildView(boolean isLastChild, ViewGroup parent) { + return mInflater.inflate(isLastChild ? mLastChildLayout : mChildLayout, parent, false); + } + + public View newGroupView(boolean isExpanded, ViewGroup parent) { + return mInflater.inflate(isExpanded ? mExpandedGroupLayout : mCollapsedGroupLayout, + parent, false); + } +} |