2013-03-27 26 views
1

我正在嘗試更新pageradapter類以外的圖像,但它不起作用。我通過其他方式取得了成功,但效率不高。如何在PageAdapter之外更新ViewPager的視圖?

int pos = mPager.getCurrentItem(); 
mAdapter.notifyDataSetChanged(); 
mPager.setAdapter(mAdapter); 
mPager.setCurrentItem(pos); 

它需要很多時間來顯示其效果,任何其他方式將不勝感激。我有近20多幅圖像,因此我無法移除並重新定位視圖。我正嘗試從options menu更新圖片。期待解答或建議。謝謝!

這裏是我的代碼

public class pageAdapter extends PagerAdapter { 
@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return Global.imageList.length; 
} 

@Override 
public boolean isViewFromObject(View view, Object object) { 
    // TODO Auto-generated method stub 
    return view.equals(object); 
} 
@Override 
public Object instantiateItem(View container, final int position) { 
    // TODO Auto-generated method stub 

    View v = getLayoutInflater().inflate(R.layout.pager_item, null); 
    ImageView ivBackground = (ImageView) v 
      .findViewById(R.id.pager_image); 

    final ImageView ivFavorite = (ImageView) v 
      .findViewById(R.id.fav_image); 


    ivFavorite.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      if (!helper.isExist(Global.imageList[position])) { 

    int i = helper.insertFavourites(Global.imageList[position]); 

       if (i != -1) { 

      ivFavorite.setImageResource(R.drawable.fav_selected); 
       } 
      } else { 

       if (helper.removeFavorite(Global.imageList[position])) { 

ivFavorite .setImageResource(R.drawable.fav_unselected); 

       } 
      } 

     } 
    }); 
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
        Global.imageList[position]); 

    ivBackground.setImageBitmap(bitmap); 

    ((ViewPager) container).addView(v, 0); 
    return v; 

} 

@Override 
public void destroyItem(View container, int position, Object object) { 
    // TODO Auto-generated method stub 
    ((ViewPager) container).removeView((View) object); 
} 

} 

回答

6

您可以使用 'setTag'(對象標籤)方法時,你初始化視圖 - 'instantiateItem()' 你的 'PageAdapter',然後獲得由「findViewWithTag這一觀點(對象標籤)'

+0

對圖像視圖我需要settag ?? – ronie 2013-03-27 16:24:39

+1

setTag到您的視圖V '@覆蓋 公共對象instantiateItem(View容器,最終詮釋位置){ 視圖v = getLayoutInflater()膨脹(R.layout.pager_item,NULL); v.setTag(「pos」+ position); ... }' 並獲得鑑於 '的視圖V = mAdapter.findViewWithTag( 「POS」 +指數);' 並更新你以V想要的東西: 'ImageView的ivBackground =(ImageView的)V .findViewById (R.id.pager_image);' 建議您使用帶FragmentStatePagerAdapter/FragmentPagerAdapter的Fragment – 2013-03-28 03:13:59

+0

謝謝! setTag和getTag的想法工作 – ronie 2013-03-28 14:24:44