PagerAdapterの可視ビューの現在の位置を取得したい
getPosition()
のような明白な関数は見当たりませんでした。
オブジェクトをその配列リストのその位置に追加したいのですが、最初にそれを知る必要があります
あなたは使うでしょう:
int position = mViewPager.getCurrentItem()
私にはこの問題があり、getCurrentItem()
メソッドを取得できませんでした。
ViewPager
ではなくPageAdapter
からポジションを取得することになりました。 onPageSelected(int currentPage)
メソッドは、現在表示されているページを取得しています。
_//custom PageAdapter implementation
mAdapter = new AwesomePagerAdapter();
//Our custom view pager that extends from ViewPager
mPager = (CustomViewPager) findViewById(R.id.preview_gallery);
mPager.setAdapter(mAdapter);
// get the item that we should be showing from the intent
mCurrentPage = extra.getInt("currentIndex");
// show the item the user picked
mPager.setCurrentItem(mCurrentPage);
// listen for page changes so we can track the current index
mPager.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int arg0) {
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageSelected(int currentPage) {
//currentPage is the position that is currently displayed.
}
});
_
表示されない画像をプリロードしたいので、PageAdaper
でそれを実行してもうまくいきませんでした。 PageAdapter`のinstantiateItem(View collection, int position)
に渡される位置は、初期化される次のアイテムの位置です。これは、表示されるアイテムとは関係ありません。
その行の後に書けば
Log.i("pager",myPager.getCurrentItem()+"");
常に0であるoncreateの実行中に現在のアイテムページがlogcatに表示されます
注:私はビューページャーのオブジェクトをアダプターではなく、それ自体で使用しています。
これは私が使用した更新済みのソリューションです。 setOnPageChangeListener
は廃止されたため、addOnPageChangeListener
を使用する必要があります。
_viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
int counterPosition;
if (position == 0 || position <= currentInventory.size()){
counterPosition = position + 1;
} else {
counterPosition = position;
}
viewPagerHeader.setText("Prize " + counterPosition + " of " + currentInventory.size());
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
_
上記の実装では、正しいインデックスがmy TextView
に表示されるため、_0
_の位置とlistcurrentInventory.size()
の最後の項目が正しく表示されます。これが更新されたソリューションを探している誰かを助けることを願っています。