【发布时间】:2015-04-02 22:58:42
【问题描述】:
我正在使用 Viewpager 和 PagerAdapter 创建一个带有图像和点赞按钮的图库。请参考我的代码:
public class GalleryAdapter extends PagerAdapter {
private Activity _activity;
private ArrayList<MyPhotoItem> _imageCollection;
// Components in fullsceen layout
ImageView imgDisplay;
private ToggleButton btnLike;
// Variable for btnLike
private boolean isChecked;
// constructor
public GalleryAdapter(Activity activity,
ArrayList<MyPhotoItem> images) {
this._imageCollection = images;
}
@Override
public int getCount() {
return this._imageCollection.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((RelativeLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
inflater = (LayoutInflater) _activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View viewLayout = inflater.inflate(R.layout.layout_gallery_image,
container, false);
imgDisplay = (ImageView) viewLayout
.findViewById(R.id.layout_gallery_imgDisplay);
Picasso.with(this._activity.getApplicationContext())
.load(_imageCollection.get(position).url).into(imgDisplay);
btnLike = (ToggleButton) viewLayout
.findViewById(R.id.layout_gallery_likeButton);
btnLike.setOnCheckedChangeListener(null);
btnLike.setChecked(isChecked);
btnLike.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
isChecked = true;
} else {
isChecked = false;
}
}
});
((ViewPager) container).addView(viewLayout);
return viewLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((RelativeLayout) object);
}
@Override
public int getItemPosition(Object object) {
return PagerAdapter.POSITION_NONE;
}
}
我当前的问题:当我滑动到其他页面并返回之前的页面时,Viewpager 不会保持切换按钮状态(假设在 Viewpager 中加载了 5 张照片)。我浏览了几篇 Stackoverflow 帖子,但没有一个可以正确解决我的问题。
任何建议将不胜感激。提前致谢。
【问题讨论】:
-
由于片段被回收,您的视图可能会被重置。最好在 LocalStorage 中设置值并检查 LocalStorage 的先前值并将值设置为查看。
标签: android android-viewpager togglebutton android-pageradapter recycle