2013-03-03 47 views
0

我有一个viewpager,我正在使用它作为杂志电子阅读器应用程序中的主要导航元素。我已经定义了一个布局来充当每个文章的“封面”,并且这些显示都很好。不过,我想通过膨胀不同的布局来每6次显示广告。所以,在viewpager适配器的instantiateItem方法上,我有以下语句:if ((position != 0) && (position%6 == 0) && (adsShown < ads.size()))。该计划启动罚款和文章的意见充分适当。但是,当我到达应显示广告的位置时,视图是空白的。为什么是这样?为什么我的viewpager返回空白视图?

下面是instantiateItem方法的完整代码:

 @Override 
    public Object instantiateItem(View arg0, int position) { 

     if ((position != 0) && (position%2 == 0) && (adsShown < ads.size())){ 
      View v = getLayoutInflater().inflate(R.layout.adview, null); 

      ImageView adImg = (ImageView)v.findViewById(R.id.adImage); 
      adImg.setImageBitmap(ads.get(adsShown).image); 
      v.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Intent intent = new Intent(); 
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(ads.get(adsShown).linkURL)); 
        startActivity(browserIntent); 
       } 
      }); 
      adsShown++;   
      System.out.println("ADSSHOWN" + adsShown); 
      return v; 
     } 

     else{ 

    Article s = toShow.get(position-adsShown); 

    View v = getLayoutInflater().inflate(R.layout.previewpage, null); 

    TextView hl = (TextView)v.findViewById(R.id.coverHl); 
    ImageView img = (ImageView)v.findViewById(R.id.coverImg); 
    TextView blurb = (TextView)v.findViewById(R.id.coverBlurb); 
    TextView author = (TextView)v.findViewById(R.id.coverAuthor); 
    TextView bot = (TextView)v.findViewById(R.id.coverBot); 



    hl.setText(s.title); 
    img.setImageBitmap(s.image); 
    blurb.setText(Html.fromHtml(s.excerpt)); 
    author.setText("by "+ s.author.name);   
    bot.setText(s.cats.get(0).name + " // " + s.date); 

    v.setOnClickListener(new OnClickListener() { 


     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(); 
      Article topass = showing; 
      // System.out.println("XXYYZZAA: " + topass.headline); 
      intent.setClassName("com.calib.caliber", "com.calib.caliber.ArticleView"); 
    //  intent.putExtra("title", topass.title); 
      intent.putExtra("a", topass); 
    //  intent.putExtra("author", topass.author.name); 
     // intent.putExtra("content", topass.content); 
    //  intent.putExtra("id", topass.ID); 

      startActivityForResult(intent, 1);    
     } 
    }); 


    ((ViewPager) arg0).addView(v); 

    return v; 
     } 
} 

,这里是为AD浏览活动的XML布局文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#000000"> 

<TextView 
    android:id = "@+id/adText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text = "advertisement" 
    android:textColor="#FFFFFF" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"></TextView> 

<ImageView 
    android:id = "@+id/adImage" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"  
    android:layout_below = "@id/adText"> 
    </ImageView> 

</RelativeLayout> 

回答

2

我认为你从忘了((ViewPager) arg0).addView(v);如果()第一部分,而其他部分包含它。

+0

哎呀,谢谢你指出。 – drewmoore 2013-03-03 22:54:25

相关问题