2016-11-18 136 views
0

在我的活动中,我有一个OnPageChangeListener和查看传呼机实现。viewPager不刷新instantiateItem

论功能onPageSelected我调用函数名viewPagerHandler,当我把所有的逻辑单viewPager页(按钮,操作取决于当前页面等)

public class ActivityClass extends Activity implements ViewPager.OnPageChangeListener, View.OnClickListener{ 

    protected void onCreate(Bundle savedInstanceState) { 
    viewPager=(ViewPager)findViewById(R.id.Pager); 
      adapter= new 
    ViewPageAdapter(ActivityClass.this,list,imagesList); 
      viewPager.setAdapter(adapter); 
       viewPager.setCurrentItem(0); 
      viewPager.addOnPageChangeListener(ActivityClass.this); 
    } 

    @Override 
     public void onClick(View v) { 
     } 

     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 
     @Override 
     public void onPageSelected(int position) { 
      this.position=position; 
      viewPagerHandler(viewPager.findViewWithTag(position),position); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
     } 
    public View viewPagerHandler(final View view, final int position){ 
    //ALL LOGIC BUTTONS ACTIONS ETC. 
    view.invalidate(); 
    return view; 
    } 
     } 
    public class ViewPageAdapter extends PagerAdapter{ 

    @Override 
     public Object instantiateItem(final ViewGroup container, final int position) { 
      final View itemView = LayoutInflater.from(mContext).inflate(R.layout.art_work_item, container, false); 
      itemView.setTag(position); 

container.add(itemView); // edited after suggested 
      if(mContext instanceof ActivityClass && position==0) //The page listener in ActivityClass is trigger only when page is changed so i tried to hack it when the viewPager is instantiate for the first time    
return ((ActivityClass) mContext).viewPagerHandler(itemView,position); 

      return itemView; 
     } 
    } 

编辑:逻辑完美的作品上第一个和最后一个项目。对于其他人来说,视图并不令人耳目一新(不过它仍然有效,因为我点击了按钮后颜色发生了变化,当我点击它们,然后滑动到下一个项目并返回到前一个颜色时,颜色被更改为触发器)

回答

1

你缺少在instantiateItem()方法行,

public Object instantiateItem(final ViewGroup container, final int position) { 
    final View itemView = LayoutInflater.from(mContext).inflate(R.layout.art_work_item, container, false); 
    itemView.setTag(position); 

    container.addView(itemView); 

    if(mContext instanceof ActivityClass && position==0) //The page listener in ActivityClass //is trigger only when page is changed so i tried to hack it when the viewPager is //instantiate for the first time 
    return ((ActivityClass) mContext).viewPagerHandler(itemView,position); 

    return itemView; 
} 
+0

所以我应该返回容器我instantiateItem? – Expiredmind

+0

@Expiredmind不返回itemView,但添加到容器 – Raghavendra

+0

没有只是在返回语句前添加此行 –