3

您好,我正在使用 View Pager 和 PagerAdapter。在 PagerAdapter 中,'instantiateItem()' 最初调用了两次。

请帮我解决这个问题,这样 instantiateItem() 也应该只调用一次。

提前致谢。

public Object instantiateItem(View collection, int position) {
    LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    int resId = 0;
    switch (position) {
        case 0: {
            resId = R.layout.first_template;
            break;
        }
        case 1: {
            resId = R.layout.second_template;
            break;
        }
        case 2: {
            resId = R.layout.third_template;
            break;
        }
        case 3: 
            resId = R.layout.first_template;
            break;
    }
    View view = inflater.inflate(resId, null);
    ((ViewPager)collection).addView(view, 0);
    return view;
}

@Override
public void destroyItem(View view, int arg1, Object arg2) {
    ((ViewPager) view).removeView((View) arg2);
}

@Override
public boolean isViewFromObject(View view, Object obj) {
    return view == ((View) obj);

}

@Override
public Parcelable saveState() {
    return null;
}

@Override
public int getCount() {
    return 4;
}

public class PageViewActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_page_view);
        PageAdapter adapter = new PageAdapter();
        ViewPager myPager = (ViewPager) findViewById(R.id.viewpager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(0);
    }
}
4

0 回答 0