Implement getTaskListFragment to work with the fragment pager, which also fixes the showing comments problem

pull/14/head
Sam Bosley 13 years ago
parent ed6984e58d
commit 44a425bad0

@ -187,6 +187,15 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
}
}
@Override
public TaskListFragment getTaskListFragment() {
if (fragmentLayout == LAYOUT_SINGLE) {
return tlfPager.getCurrentFragment();
} else {
return super.getTaskListFragment();
}
}
@Override
public void setupTasklistFragmentWithFilter(Filter filter, Bundle extras) {
if (fragmentLayout == LAYOUT_SINGLE) {

@ -1,5 +1,7 @@
package com.todoroo.astrid.adapter;
import java.util.HashMap;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.app.Fragment;
@ -13,12 +15,15 @@ import com.todoroo.astrid.api.FilterWithCustomIntent;
public class TaskListFragmentPagerAdapter extends FragmentStatePagerAdapter implements FilterDataSourceChangedListener {
private final HashMap<Integer, Fragment> positionToFragment;
private final FilterAdapter filterAdapter;
public TaskListFragmentPagerAdapter(FragmentManager fm, FilterAdapter filterAdapter) {
super(fm);
this.filterAdapter = filterAdapter;
filterAdapter.setDataSourceChangedListener(this);
positionToFragment = new HashMap<Integer, Fragment>();
}
@Override
@ -28,7 +33,14 @@ public class TaskListFragmentPagerAdapter extends FragmentStatePagerAdapter impl
@Override
public Fragment getItem(int position) {
return getFragmentForFilter(filterAdapter.getItem(position));
Filter filter = filterAdapter.getItem(position);
Fragment fragment = getFragmentForFilter(filter);
positionToFragment.put(position, fragment);
return fragment;
}
public Fragment lookupFragmentForPosition(int position) {
return positionToFragment.get(position);
}
@Override

@ -5,6 +5,7 @@ import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.adapter.TaskListFragmentPagerAdapter;
import com.todoroo.astrid.api.Filter;
@ -37,4 +38,12 @@ public class TaskListFragmentPager extends ViewPager {
public void showFilter(int index) {
setCurrentItem(index, true);
}
/**
* Returns a reference to the currently showing fragment
* @return
*/
public TaskListFragment getCurrentFragment() {
return (TaskListFragment) ((TaskListFragmentPagerAdapter) getAdapter()).lookupFragmentForPosition(getCurrentItem());
}
}

Loading…
Cancel
Save