Android Open Source - HydraListAndroid Expanding Adapter Helper






From Project

Back to project page HydraListAndroid.

License

The source code is released under:

Apache License

If you think the Android project HydraListAndroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.fada21.android.hydralist.expandable;
/*from  ww  w  . j  a v  a  2 s  .c o  m*/
import android.content.Context;
import android.view.View;

import com.fada21.android.hydralist.data.HydraListDataProvider;
import com.fada21.android.hydralist.expandable.interfaces.ExpandableListItem;
import com.fada21.android.hydralist.helper.HydraListAdapterHelper;
import com.fada21.android.hydralist.util.HydraListConsts;

public abstract class ExpandingAdapterHelper<T extends ExpandableListItem> extends HydraListAdapterHelper<T> {

  private final int expandingLayout;

  public ExpandingAdapterHelper(Context context, int expandingLayout) {
    super(context);
    this.expandingLayout = expandingLayout;
  }

  /**
   * Provides id in layout in which expanding layout should be filled
   * 
   * @return view element id for expanding part
   */
  public int getExpandingLayout() {
    return expandingLayout;
  }

  @Override
  public void ensureCompliance(HydraListDataProvider<T> dataProvider) throws IllegalStateException {
    if (expandingLayout == HydraListConsts.UNSET) {
      throw new IllegalStateException("Must provide resource id for expanding view (expandingLayoutResId)");
    }
    
    if (! ExpandableListItem.class.isAssignableFrom(dataProvider.getHydraListItemType())) {
      throw new IllegalStateException("Data provider items must implement Expandable interface!");
    }
  }

  public void storeExpandableViewHolderAsTag(View convertView) {
    ExpandableViewHolder viewHolder = new ExpandableViewHolder(convertView, getExpandingLayout());
    convertView.setTag(getExpandingLayout(), viewHolder);
  }

  public ExpandingLayout getExpandedView(View convertView, final T data) {
    ExpandableViewHolder viewHolder = (ExpandableViewHolder) convertView.getTag(expandingLayout);
    ExpandingLayout expandingLayout = viewHolder.expandingLayoutViewGroup;
    expandingLayout.setExpandedHeight(data.getExpandedHeight());
    expandingLayout.setSizeChangedListener(data.getOnSizeChangedListener());

    if (data.isExpandable())
      setupExpandedView(convertView, data);

    if (!data.isExpanded()) {
      expandingLayout.setVisibility(View.GONE);
    } else {
      expandingLayout.setVisibility(View.VISIBLE);
    }

    return expandingLayout;
  }

  /**
   * Implement look of expanded view of a list item
   * 
   * @param convertView
   *            view to alter
   * @param data
   *            to be filled
   */
  protected abstract void setupExpandedView(View convertView, final T data);

}




Java Source Code List

com.fada21.android.hydralist.HydraListAdapter.java
com.fada21.android.hydralist.HydraListView.java
com.fada21.android.hydralist.data.HydraListDataProvider.java
com.fada21.android.hydralist.data.HydraListItem.java
com.fada21.android.hydralist.data.ListDataProvider.java
com.fada21.android.hydralist.dragable.DragableAdapterHelper.java
com.fada21.android.hydralist.dragable.DragableConsts.java
com.fada21.android.hydralist.dragable.DragableListViewDelegate.java
com.fada21.android.hydralist.dragable.interfaces.DragableListItem.java
com.fada21.android.hydralist.dragable.interfaces.OnItemMovedListener.java
com.fada21.android.hydralist.dragable.interfaces.Swappable.java
com.fada21.android.hydralist.expandable.BasicExpandableListItem.java
com.fada21.android.hydralist.expandable.ExpandableViewHolder.java
com.fada21.android.hydralist.expandable.ExpandingAdapterHelper.java
com.fada21.android.hydralist.expandable.ExpandingLayout.java
com.fada21.android.hydralist.expandable.ExpandingListViewDelegate.java
com.fada21.android.hydralist.expandable.interfaces.ExpandableListItem.java
com.fada21.android.hydralist.expandable.interfaces.OnSizeChangedListener.java
com.fada21.android.hydralist.helper.HydraListAdapterHelper.java
com.fada21.android.hydralist.helper.HydraListViewHolder.java
com.fada21.android.hydralist.helper.PlainAdapterHelper.java
com.fada21.android.hydralist.sample.CustomExpandingAdapterHelper.java
com.fada21.android.hydralist.sample.SampleConsts.java
com.fada21.android.hydralist.sample.SampleContents.java
com.fada21.android.hydralist.sample.SampleDataProvider.java
com.fada21.android.hydralist.sample.SampleHydraListActivity.java
com.fada21.android.hydralist.sample.SampleListItem.java
com.fada21.android.hydralist.sample.SamplePlainAdapterHelper.java
com.fada21.android.hydralist.sample.SampleViewHolder.java
com.fada21.android.hydralist.util.HydraListConsts.java
com.fada21.android.hydralist.util.HydraListUtils.java
com.fada21.android.hydralist.util.PublicListView.java