onPageSelected在viewPager.setCurrentItem上调用instatly

时间:2013-02-26 16:39:10

标签: android android-viewpager android-tabs

对于我的项目,我使用可滑动标签在列表之间导航。 当删除其中一个列表时,我希望有一个流畅的动画,并尝试使用viewpager.setCurrentItem(page, true);将其归档,以便在删除列表之前先切换到另一个页面。 然后我尝试在切换页面后捕获事件以删除带有OnPageChangeListener的列表。

我的问题是在动画完成之前似乎调用了onPageSelected(int position)

这是代码:)

我开始动画的地方:

case R.id.menu_clear_lists:
int pageAmount = sectionsPagerAdapter.getCount();
if (pageAmount < 2)
return false;
int page = viewPager.getCurrentItem();
int newPage = page == 0 ? page + 1 : page - 1;
deleteOnChange = true;
deletePage = page;
viewPager.setCurrentItem(newPage, true);
return true;

事件处理程序:

if (!deleteOnChange)
    return;
deleteOnChange = false;
Resource.deleteList(deletePage);
sectionsPagerAdapter.destroyItem(viewPager,
viewPager.getCurrentItem(),
sectionsPagerAdapter.getItem(deletePage));
sectionsPagerAdapter.notifyDataSetChanged();

我希望有人能解决我的问题:)

1 个答案:

答案 0 :(得分:1)

http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html

如果查看ViewPager的OnPageChangeListener,您将看到onPageScrollStateChanged方法。如果在监听器上覆盖它,则可以等待它发送“SCROLL_STATE_IDLE”作为参数,这意味着页面已经稳定并处于静止状态。但要小心,因为如果用户启动滚动但实际上没有进入新页面,您将得到解决,它将在当前页面上。您可能希望同时使用onPageSelected和onPageScrollStateChanged来跟踪页面是否转动,然后是否已完成转动。