Android 如何更新ViewPager的元素(如按钮)?
我想知道如何在不恢复适配器的情况下更新ViewPager视图的任何元素。我用的是PagerAdapter而不是FragmentStatePagerAdapter 寻呼机适配器的代码如下所示:Android 如何更新ViewPager的元素(如按钮)?,android,android-viewpager,onclicklistener,Android,Android Viewpager,Onclicklistener,我想知道如何在不恢复适配器的情况下更新ViewPager视图的任何元素。我用的是PagerAdapter而不是FragmentStatePagerAdapter 寻呼机适配器的代码如下所示: public class PagerData extends PagerAdapter { private Context context; private List<ParseUser> list; private boolean[] likes = {true, false, true, f
public class PagerData extends PagerAdapter {
private Context context;
private List<ParseUser> list;
private boolean[] likes = {true, false, true, false, false};
private static OnDataChangedListener odl;
public PagerData(Context context, List<ParseUser> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
if (list == null)
return 0;
return list.size();
}
private TextView reason, amount;
private ImageButton fav, bookmark;
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
View v = LayoutInflater.from(context).inflate(R.layout.pager_data, null, false);
fav = (ImageButton) v.findViewById(R.id.fav);
startLikes(position);
final ParseRelation<ParseUser> relation = ParseUser.getCurrentUser().getRelation("favorites");
fav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLike(position, container);
//relation.add(ParseUser.getCurrentUser());
//ParseUser.getCurrentUser().saveEventually();
}
});
container.addView(v, 0);
return v;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
private void setLike(int position, ViewGroup cont) {
if (!likes[position]) {
fav.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fav_rotate));
fav.setImageResource(R.mipmap.ic_favorite);
likes[position] = true;
} else {
fav.setImageResource(R.mipmap.ic_favorite_border);
likes[position] = false;
}
}
private void startLikes(int position) {
if (!likes[position]) {
fav.setImageResource(R.mipmap.ic_favorite_border);
} else {
fav.setImageResource(R.mipmap.ic_favorite);
}
}
public interface OnDataChangedListener {
void onDataChanged();
}
public static void setOnDataChangedListener(OnDataChangedListener od) {
odl = od;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return (view == object);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
public类PagerData扩展了pagerdapter{
私人语境;
私人名单;
私有布尔[]likes={true,false,true,false,false};
私有静态OnDataChangedListener odl;
公共页面数据(上下文、列表){
this.context=上下文;
this.list=列表;
}
@凌驾
public int getCount(){
if(list==null)
返回0;
返回list.size();
}
私有文本查看原因、金额;
私人图像按钮fav,书签;
@凌驾
公共对象实例化项(最终视图组容器,最终int位置){
视图v=LayoutFlater.from(上下文)。充气(R.layout.pager_数据,null,false);
fav=(图像按钮)v.findviewbyd(R.id.fav);
惊吓(位置);
final ParseRelation relation=ParseUser.getCurrentUser().getRelation(“收藏夹”);
fav.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
setLike(位置、容器);
//add(ParseUser.getCurrentUser());
//ParseUser.getCurrentUser().saveFinally();
}
});
container.addView(v,0);
返回v;
}
@凌驾
public int getItemPosition(对象){
返回位置\无;
}
私有void setLike(int位置,视图组cont){
如果(!喜欢[位置]){
fav.startAnimation(AnimationUtils.loadAnimation(context,R.anim.fav_rotate));
fav.setImageResource(R.mipmap.ic_收藏夹);
喜欢[立场]=正确;
}否则{
fav.setImageResource(R.mipmap.ic_收藏夹_边框);
喜欢[立场]=错误;
}
}
私人空位(内部位置){
如果(!喜欢[位置]){
fav.setImageResource(R.mipmap.ic_收藏夹_边框);
}否则{
fav.setImageResource(R.mipmap.ic_收藏夹);
}
}
OnDataChangedListener的公共接口{
void onDataChanged();
}
公共静态无效setOnDataChangedListener(OnDataChangedListener od){
odl=od;
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回(视图==对象);
}
@凌驾
公共项(视图组容器、int位置、对象){
container.removeView((视图)对象);
}
}
现在,当我点击fav ImageButton时,任何页面上都不会发生任何变化,但在最后一页上,fav按钮会更改图像。我认为寻呼机无法给出所单击项目的当前位置
猜猜看 调用
setLike(position,container)
后,尝试使用fav.invalidate()
。另外,据我所知,您应该将图像资源放在drawable文件夹中。Mipmap用于启动程序图标