package com.tjerkw.slideexpandable.library;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.content.Context;
/**
* Simple subclass of listview which does nothing more than wrap
* any ListAdapter in a SlideExpandalbeListAdapter
*/
class SlideExpandableListView extends ListView {
private SlideExpandableListAdapter adapter;
public SlideExpandableListView(Context context) {
super(context);
}
public SlideExpandableListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SlideExpandableListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* Collapses the currently open view.
*
* @return true if a view was collapsed, false if there was no open view.
*/
public boolean collapse() {
if (adapter != null) {
return adapter.collapseLastOpen();
}
return false;
}
public void setAdapter(ListAdapter adapter) {
this.adapter = new SlideExpandableListAdapter(adapter);
super.setAdapter(this.adapter);
}
public SlideExpandableListAdapter getSlideAdapter() {
return adapter;
}
public void setAdapter(ListAdapter adapter, int toggle_button_id, int long_toggle_button_id, int expandable_view_id) {
this.adapter = new SlideExpandableListAdapter(adapter, toggle_button_id, long_toggle_button_id, expandable_view_id);
super.setAdapter(this.adapter);
}
/**
* Registers a OnItemClickListener for this listview which will
* expand the item by default. Any other OnItemClickListener will be overriden.
* <p/>
* To undo call setOnItemClickListener(null)
* <p/>
* Important: This method call setOnItemClickListener, so the value will be reset
*/
public void enableExpandOnItemClick() {
this.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
SlideExpandableListAdapter adapter = (SlideExpandableListAdapter) getAdapter();
adapter.getExpandToggleButton(view).performClick();
}
});
}
// @Override
// public Parcelable onSaveInstanceState() {
// return adapter.onSaveInstanceState(super.onSaveInstanceState());
// }
//
// @Override
// public void onRestoreInstanceState(Parcelable state) {
// if (!(state instanceof AbstractSlideExpandableListAdapter.SavedState)) {
// super.onRestoreInstanceState(state);
// return;
// }
//
// AbstractSlideExpandableListAdapter.SavedState ss = (AbstractSlideExpandableListAdapter.SavedState) state;
// super.onRestoreInstanceState(ss.getSuperState());
//
// adapter.onRestoreInstanceState(ss);
// }
}