私はViewPagerを使って画面の一部だけをスワイプします(View/Page全体ではなく)。Android ViewPagerは2番目のページを表示しませんか?
isViewFromObjectをハックしてtrueを返し、最初のイメージが表示されますが、2番目のイメージはロードされません。私がここで紛失していることに関する考えは?私はisViewFromObjectメソッドで何か間違っているか、またはインスタンス化アイテムでmyループがあると考えています。
注:意図的にFragmentStatePagerAdapterを拡張し、通常のPagerAdapterを拡張して使用しないでください。上記のinstantiateItemで実行されます
private class ScreenSlidePagerAdapter extends PagerAdapter {
public ScreenSlidePagerAdapter() {}
@Override
public Object instantiateItem (ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) container.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int RLayoutId;
RLayoutId = R.layout.images_to_show; //an XML with just a LinearLayout
ViewGroup imageLayout = (ViewGroup) inflater.inflate(RLayoutId, null);
for (position = 0; position < mImageURLArraylist.size(); position++) {
container.addView(insertPhoto("http:" + mImageURLArraylist.get(position)));
}//end of for loop
return imageLayout;
}
@Override
public boolean isViewFromObject (View view, Object obj) { //Object parameter is received from instantiateItem(ViewGroup, int)
//loads the first image successfully if i just do return true.
//doesn't load any of my images when I do return view == ((View) obj);
}
//one of four methods that you must override when using pageradapters
@Override
public int getCount() {
//tested in debugging and this has the correct size (2)
return mImageURLArraylist.size(); //the number of pages the adapter will create.
}
@Override
public void destroyItem (ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}//end of ScreenSlidePagerAdapter
マイinsertPhoto方法:
public View insertPhoto(String path){
LinearLayout layout = new LinearLayout(getActivity());
layout.setGravity(Gravity.CENTER);
ImageView imageView = new ImageView(getActivity());
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Picasso.with(getActivity()).load(path).into(imageView); //tried this but got errors when running > resize(layout.getWidth(), layout.getHeight()), also tried .fit() after .load image wouldn't load
layout.addView(imageView);
return layout;
}
これはうまくいった!ありがとうGiso!もし私が、もし私がforループを必要とするだろう、線図レイアウトにViewを追加していたら、ダムフォローアップの質問。なぜ私はここにいないのですか?forループなしのすべてのアイテム(つまり画像)をどのように反復するのでしょうか? – Noobprogrammer
@Noobprogrammer:そうではありません。 ViewPagerの動作は異なります。実際には、すぐにすべてのページを読み込むことさえありません。代わりに、それは隣接するページをインスタンス化し、メモリを節約するためにページをさらに遠ざける。 メモリに保持されるページの数は、[setOffscreenPageLimit()](http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit%28int%29)で制御できます。 –