2013-08-20 22 views
0

我的目標是在我的應用中實現一個指南/如何使用應用活動,用戶可以在預定義的一組視圖之間切換。所以,我決定使用ViewPagerViewPager以意想不到的方式運行

這是我在GuideActivity是怎麼做:

mPager = (ViewPager) findViewById(R.id.pager); 
mAdapter = new GuideAdapter(getBaseContext()); 
mPager.setAdapter(mAdapter); 

這是我實現的PagerAdapter

class GuideAdapter extends PagerAdapter { 

    private Context context; 
    protected static final int[] SLIDES = new int[] { 
     R.drawable.page1, R.drawable.page2, R.drawable.page3 }; 

    public GuideAdapter(Context context) { 
     this.context = context; 
    } 
    @Override 
    public View instantiateItem(ViewGroup container, int position) { 
     ImageView image = new ImageView(container.getContext()); 
     image.setImageResource(SLIDES[position]); 
     container.addView(image, LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT); 
     return image; 
    } 

    @Override 
    public void destroyItem(ViewGroup collection, int position, Object view) { 
     ((ViewPager) collection).removeView((View) view); 
    } 
    @Override 
    public int getCount() { 
     return SLIDES.length; 
    } 
    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     return true; 
    } 
} 

的問題是,這些圖像在彼此頂部繪製。如果我從左向右滾動,則看不到圖像。如果我向後滾動,則顯示的圖像將消失。 底線:我的ViewPager表現得出乎意料!

我重寫了四個必需的方法 in PagerAdapter。我不確定我做錯了什麼,但我認爲它與instantiateItem()和/或destroyItem()有關。

任何想法?

+1

它看起來你需要正確地實現isViewFromObject()。 http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#isV​​iewFromObject(android.view.View,java.lang.Object) –

+0

就是這樣!只是'返回arg0 == arg1'解決了它。感謝您指出了這一點! – iTurki

回答

0

這是必要的:

@Override 
public boolean isViewFromObject(View view, Object object) 
{ 
return view == object; 
} 
0

由於@beworker指出的那樣,我不實現isViewFromObject()正常。我以爲我是!

這是我如何固定它:

@Override 
public boolean isViewFromObject(View arg0, Object arg1) { 
    return arg0 == arg1; 
} 
相關問題