Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何更新ViewPager的元素(如按钮)?_Android_Android Viewpager_Onclicklistener - Fatal编程技术网

Android 如何更新ViewPager的元素(如按钮)?

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

我想知道如何在不恢复适配器的情况下更新ViewPager视图的任何元素。我用的是PagerAdapter而不是FragmentStatePagerAdapter

寻呼机适配器的代码如下所示:

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用于启动程序图标