Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class CustomExpandableListAdapter extends SimpleExpandableListAdapter {
- Context mCtx;
- LayoutInflater vi;
- public List<List<Boolean>> checkData;
- String[] mChildFrom;
- int[] mChildTo;
- public CustomExpandableListAdapter(Context ctx, List<? extends Map<String, ?>> groupData, int groupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>>childData, int childLayout, String[] childFrom, int[] childTo, List<List<Boolean>> checkData) {
- super(ctx, groupData, groupLayout, groupFrom, groupTo, childData, childLayout, childFrom, childTo);
- this.mCtx=ctx;
- this.vi = (LayoutInflater)mCtx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- this.checkData = checkData;
- this.mChildFrom = childFrom;
- this.mChildTo = childTo;
- }
- public boolean updateChecked(List<List<Boolean>> newData) {
- checkData = newData;
- return true;
- }
- public boolean isChecked(int groupPosition, int childPosition) {
- return checkData.get(groupPosition).get(childPosition);
- }
- 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]));
- }
- }
- }
- public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
- View rowView;
- rowView = new RelativeLayout(mCtx);
- if(vi != null) {
- vi.inflate(R.layout.call_list_item, (RelativeLayout)rowView, true);
- }
- if(this.checkData.get(groupPosition).get(childPosition)) {
- ((CheckedTextView)rowView.findViewById(R.id.checkmark)).setChecked(true);
- } else {
- ((CheckedTextView)rowView.findViewById(R.id.checkmark)).setChecked(false);
- }
- switch(mMode) {
- case MODE_PENDING:
- if(((TextView)rowView.findViewById(R.id.item_text_job))!=null){
- ((TextView)rowView.findViewById(R.id.item_text_job)).setVisibility(View.VISIBLE);
- }
- break;
- case MODE_BILLING:
- //rowView.forceLayout();
- break;
- default:
- break;
- }
- //if the child is in the "Not Registered" group, display different fields
- String display_name = null;
- if(groupData.get(groupPosition).containsValue("Not Registered")) {
- display_name = childData.get(groupPosition).get(childPosition).get("display_name");
- if(display_name != null && !display_name.equals("")) {
- TextView displayNameView = ((TextView)rowView.findViewById(R.id.text_minutes_billed));
- RelativeLayout.LayoutParams displayNameParams = ((RelativeLayout.LayoutParams)(displayNameView.getLayoutParams()));
- displayNameParams.addRule(RelativeLayout.BELOW, R.id.item_hidden_number);
- displayNameView.setLayoutParams(displayNameParams);
- displayNameView.setText(display_name);
- }
- }
- bindView(rowView, childData.get(groupPosition).get(childPosition), mChildFrom, mChildTo);
- if(groupData.get(groupPosition).containsValue("Not Registered")) {
- if(display_name!=null && !display_name.equals("")) {
- ((TextView)rowView.findViewById(R.id.text_minutes_billed)).setText(display_name);
- ((TextView)rowView.findViewById(R.id.text_minutes_billed)).setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
- } else {
- ((TextView)rowView.findViewById(R.id.text_minutes_billed)).setVisibility(View.GONE);
- }
- ((TextView)rowView.findViewById(R.id.item_text_duration_billed)).setVisibility(View.GONE);
- }
- //return super.getChildView(groupPosition, childPosition, isLastChild, rowView, parent);
- return rowView;
- }
- public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
- RelativeLayout rowView;
- if(convertView == null) {
- rowView = new RelativeLayout(mCtx);
- if(vi!=null){
- vi.inflate(R.layout.call_group_item, rowView, true);
- }
- } else {
- rowView = (RelativeLayout)convertView;
- }
- if(!(((TextView)rowView.findViewById(R.id.item_text_job)) == null) )
- {
- ((TextView)rowView.findViewById(R.id.item_text_job)).setVisibility(View.GONE);
- }
- switch(mMode) {
- case MODE_PENDING:
- break;
- case MODE_BILLING:
- if(((TextView)rowView.findViewById(R.id.item_text_job))!=null) {
- ((TextView)rowView.findViewById(R.id.item_text_job)).setVisibility(View.VISIBLE);
- }
- //rowView.forceLayout();
- break;
- default:
- break;
- }
- //TODO: add code to resize the item when showing the job, as it is not done automagically.
- //parent.forceLayout();
- return super.getGroupView(groupPosition, isExpanded, rowView, parent);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement