私はViewPagerクラスを拡張し、onPageChangeListenerを実装しました。 このViewPagerは、SherlockFragment内のCirclePageIndicatorと組み合わせて使用します。 ViewPagerにはImageViewsとTextViewsが含まれています。Android ViewPagerのonPageScrollStateChangedは呼び出されません
ページが変更されるたびに、私はViewPagerの下で何かする必要があります。だから、私はonPageScrollStateChangedを使用して、状態がIDLEなのか何かを確認する必要があると考えました。
問題は、実装された3つのメソッド(onPageScrollStateChanged、onPageSelectedおよびonPageScrolled)では、onPageScrolledのみが呼び出されることです(各メソッドでログメッセージでチェックしました)。何故ですか ?以下のコード。
public class UninterceptableViewPager extends ViewPager implements OnPageChangeListener{
private ArrayList<TwoRowListViewAdapter> mAdaptersList = null;
private ListView mListView = null;
private ProgressBar mProgressBar = null;
public UninterceptableViewPager(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public boolean onInterceptTouchEvent(MotionEvent event)
{
getParent().requestDisallowInterceptTouchEvent(true);
return super.onInterceptTouchEvent(event);
}
public void setAdaptersList(ArrayList<TwoRowListViewAdapter> adaptersList)
{
mAdaptersList = adaptersList;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
super.onPageScrolled(position++, positionOffset, positionOffsetPixels);
if (positionOffset == 0) // FIXME
loadHistoryPage(position);
}
@Override
public void onPageSelected(int position) {}
@Override
public void onPageScrollStateChanged(int state) {}
// -------------------------------------------------------------------------------------------
// -------------- Helper Methods
// -------------------------------------------------------------------------------------------
public void setListView(ListView listview)
{
mListView = listview;
}
public void setProgressBar(ProgressBar progressBar)
{
mProgressBar = progressBar;
}
private void loadHistoryPage(int position)
{
mListView.setVisibility(View.INVISIBLE);
mProgressBar.setVisibility(View.VISIBLE);
mListView.setAdapter(null);
mListView.setAdapter(mAdaptersList.get(position-1));
mProgressBar.setVisibility(View.INVISIBLE);
mListView.setVisibility(View.VISIBLE);
}
}
はい、私はあなたの仮定が正しいと思います。まあ、私はそれを確認する必要がありますが、それは理にかなっています。この完璧な答えをありがとう!私は明日の解決策をテストし、私の発見を報告します。 –
okフィードバックをお待ちしております。 – karn
驚くばかりです。それは完全に動作します。どうもありがとう ! –