2013-07-16 36 views
1

我使用ViewPager編寫Android應用程序。而現在,我在使用ViewPager時感到困惑。 當我使用下面的代碼從佈局xml文件膨脹視圖並將其添加到viewpager。我應該選擇哪種方式在ViewPager的instantiateItem方法中充氣視圖?

public Object instantiateItem(ViewGroup container, int position) { 
    View view = View.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, null); 
    container.addView(view); 
    return view; 
} 

但是當我使用下面的代碼時,viewpager將不顯示任何內容。

public Object instantiateItem(ViewGroup container, int position) {  
    View view = View.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, container); 
    return view; 
} 

我認爲這兩個代碼片段做同樣的事情,但結果是不同的。我不知道爲什麼。誰能幫我 ?謝謝 !

回答

0

其實,這些片段都做得稍有不同的事情:

  1. 膨脹視圖,並把它添加到容器;
  2. 只是膨脹視圖;

這裏的問題是:

調用View.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, container);等於下列之一:LayoutInflater.from(ShareTasksActivity.this).inflate(R.layout.item_internal_advertisement, container, false);(結帳its source)。同時instantiateItem() documentation提到:

適配器是負責添加視圖,以給定的 這裏

所以容器,因爲它不添加視圖第二變沒有在所有的工作容器。

但是,每個礦井理解的第一個變體也有一個問題:佈局參數如果您提供了null父視圖,您可能會提供頂級視圖R.layout.item_internal_advertisement

相關問題