Viewpager中动态更新View视图

来源:互联网 发布:pdr编辑软件android 编辑:程序博客网 时间:2024/05/19 02:28
<span style="color: rgb(50, 62, 50); font-family: Arial; font-size: 14px; line-height: 26px;">查了很多资料,发现要做到ViewPager刷新数据,动态更改adapter的数量那种效果只要实现这个方法就可以了:</span>
<span style="color: rgb(50, 62, 50); font-family: Arial; font-size: 14px; line-height: 26px;"></span><pre name="code" class="java">@Override    public int getItemPosition(Object object) {        // TODO Auto-generated method stub        return PagerAdapter.POSITION_NONE;    }

注意getItemPostion要返回POSTION_NONE时,viewpager会以为没有检测到item的存在从而刷新。但是这种方法不适合数据量比较大的。

 

我这里用的是Fragment装在到ViewPager中,即使我使用了这个方法,依然达不到效果。

但是每次

destroyItem掉view时,将view置空就可以了、

public class PageAdapter  extends PagerAdapter {    private Context mContext;    private ArrayList<ImageView> mlist;    private ArrayList<ImgListBean.ImgsBean> mImage;    public PageAdapter(Context mContext, ArrayList<ImageView> mlist,ArrayList<ImgListBean.ImgsBean> mImage) {        this.mContext = mContext;        this.mlist = mlist;        this.mImage = mImage;    }    @Override    public int getCount() {        return mlist.size();    }    /**     * 从指定的position创建page     *     * @param position The page position to be instantiated.     * @return 返回指定position的page,这里不需要是一个view,也可以是其他的视图容器.     */    @Override    public Object instantiateItem(View collection, final int position) {        ImageView child = mlist.get(position);        child.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String fileType = mImage.get(position).getFileType();                if (TextUtils.equals("3",fileType)) {                    Intent intent = new Intent(mContext, VideoActivity.class);                    intent.putExtra("video", mImage.get(position).getFullPictureUrl());                    mContext.startActivity(intent);                }            }        });        ((ViewPager) collection).addView(child, 0);        return child;    }//    @Override//    public void destroyItem(View collection, int position, Object view) {//        ((ViewPager) collection).removeView(mlist.get(position));//    }    @Override    public void destroyItem(View collection, int position, Object o) {// 动态removeView很重要,是否能够删除数据就靠这句,否则会导致无法刷新视图        View view = (View)o;        ((ViewPager) collection).removeView(view);        view = null;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==(object);    }    // 强制动态更新Item    @Override    public int getItemPosition(Object object) {        // TODO Auto-generated method stub        return PagerAdapter.POSITION_NONE;    }}


                                             
0 0
原创粉丝点击