Auto-expand, try #2. just expand the first expandable of each plugin

pull/14/head
Tim Su 16 years ago
parent df4e219409
commit 5beb935b32

@ -18,15 +18,15 @@ import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.Parcelable; import android.os.Parcelable;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ExpandableListView; import android.widget.ExpandableListView;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.Toast; import android.widget.Toast;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R; import com.timsu.astrid.R;
@ -39,6 +39,7 @@ import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.SearchFilter; import com.todoroo.astrid.api.SearchFilter;
import com.todoroo.astrid.model.Task; import com.todoroo.astrid.model.Task;
@ -183,12 +184,19 @@ public class FilterListActivity extends ExpandableListActivity {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
try { try {
Parcelable[] filters = intent.getExtras(). final Parcelable[] filters = intent.getExtras().
getParcelableArray(AstridApiConstants.EXTRAS_RESPONSE); getParcelableArray(AstridApiConstants.EXTRAS_RESPONSE);
for (Parcelable item : filters) { for (Parcelable item : filters) {
adapter.add((FilterListItem)item); adapter.add((FilterListItem)item);
} }
adapter.notifyDataSetChanged(); adapter.notifyDataSetChanged();
runOnUiThread(new Runnable() {
@Override
public void run() {
expandList(filters);
}
});
} catch (Exception e) { } catch (Exception e) {
exceptionService.reportError("receive-filter-" + //$NON-NLS-1$ exceptionService.reportError("receive-filter-" + //$NON-NLS-1$
intent.getStringExtra(AstridApiConstants.EXTRAS_ADDON), e); intent.getStringExtra(AstridApiConstants.EXTRAS_ADDON), e);
@ -208,32 +216,23 @@ public class FilterListActivity extends ExpandableListActivity {
registerForContextMenu(getExpandableListView()); registerForContextMenu(getExpandableListView());
getExpandableListView().setGroupIndicator( getExpandableListView().setGroupIndicator(
getResources().getDrawable(R.drawable.expander_group)); getResources().getDrawable(R.drawable.expander_group));
/*getExpandableListView().setOnHierarchyChangeListener(new OnHierarchyChangeListener() {
@Override
public void onChildViewAdded(View parent, View child) {
// auto-expand adapter
ExpandableListView list = getExpandableListView();
long packedLastItem = ExpandableListView.getPackedPositionForGroup(adapter.getGroupCount() - 1);
outer: for(int group = 0; group < adapter.getGroupCount(); group++) {
// if last group is already outside of bounds, stop
int lastGroup = list.getFlatListPosition(packedLastItem);
if(lastGroup > list.getLastVisiblePosition())
break;
while (adapter.getChildrenCount(group) == 0) {
group++;
if(group >= adapter.getGroupCount())
break outer;
} }
list.expandGroup(group); /**
* Expand the first category filter in this group
* @param filters
*/
protected void expandList(Parcelable[] filters) {
ExpandableListView list = getExpandableListView();
for(Parcelable filter : filters) {
if(filter instanceof FilterCategory) {
for(int i = 0; i < adapter.getGroupCount(); i++)
if(adapter.getGroup(i) == filter) {
list.expandGroup(i);
return;
} }
} }
@Override
public void onChildViewRemoved(View parent, View child) {
// do nothing
} }
});*/
} }
/** /**

Loading…
Cancel
Save