如何在PagerAdapter之外更新ViewPager的视图?

时间:2013-03-27 14:12:41

标签: android android-viewpager

我正在尝试更新pageradapter课程以外的图片,但它不起作用。我通过其他方式实现了它,但它没有效率。

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);
}

}

1 个答案:

答案 0 :(得分:8)

初始化视图时可以使用'setTag'(Object tag)方法 - 'PageAdapter'中的'instantiateItem()',然后通过'findViewWithTag(Object tag)'获取该视图