android gridview, adaptor. notifyDataSetChanged() 在for循环中不引发getview()

moondreamer 发布于 2015/03/23 18:02
阅读 1K+
收藏 0

我在用gridview, imageview 和baseadaptor结合显示一系列图片(只有不到90张的小图片)时,在鼠标点击listener中如果更改数据后,单独调用adaptor.notifyDataSetChanged(),屏幕会刷新,但是如果我设置for循环,同样的更改数据,在循环中调用adaptor.nofiydatasetchanged(),会发现在循环中程序运行更改数据后,也进到adaptor中,但不调用getview(),所以屏幕不刷新,只在循环结束后全部刷新。为什么?我如何才能使用循环刷新gridview内容呢?

adaptor 代码:

public class ImageAdapter extends BaseAdapter {
    private Context mContext;


    public ImageAdapter(Context c) {
        mContext = c;




     }


    public int getCount() {
        return MainActivity.gvThumbs.length;
    }


    public Object getItem(int position) {
        return null;
    }


    public long getItemId(int position) {
        return 0;
    }


    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(MainActivity.iImageSize, MainActivity.iImageSize));
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setPadding(2,2,2,2);
        } else {
            imageView = (ImageView) convertView;
        }
        imageView.setImageResource(MainActivity.gvThumbs[position]);
        return imageView;
    }

}

mainactivity 单独调用处:

       gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

图片数据更改函数

imageAdapter.notifyDataSetChanged();

}


mainactivity for循环调用处:

       gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

for(int i = 0; i<9;i++){

图片数据更改函数

imageAdapter.notifyDataSetChanged();} 这样gridview 就不刷新了。

}



 

加载中
返回顶部
顶部