2

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

}
4

1 に答える 1

8

ビューを初期化するときに「setTag」(オブジェクトタグ)メソッドを使用できます-「PageAdapter」で「instantiateItem()」、次に「findViewWithTag(オブジェクトタグ)」でそのビューを取得します

于 2013-03-27T15:56:24.520 に答える