Java GridView CustomAdapter仅加载一个imagebutton

Java GridView CustomAdapter仅加载一个imagebutton,java,android,android-asynctask,android-gridview,Java,Android,Android Asynctask,Android Gridview,我已经设置了一个自定义gridView适配器,如下所示 public class ImageAdapter extends BaseAdapter { String[] urls = new String[10]; //....some code class MyTask extends AsyncTask<Void,Void,Void>{ @Override protected Void doInBackground(Void... arg0) {

我已经设置了一个自定义gridView适配器,如下所示

public class ImageAdapter extends BaseAdapter {

String[] urls = new String[10];
//....some code

class MyTask extends AsyncTask<Void,Void,Void>{

    @Override
    protected Void doInBackground(Void... arg0) {
           //perform a get request and fill up the "urls" array by 10 values..
     return null;
    }
}

public View getView(int position, View convertView, ViewGroup parent) {

    new MyTask().execute(); //execute AsyncTask

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View gridView = null;


    if (convertView == null) {
        gridView = new View(context);

      // get layout from grid_layout.xml
        gridView = inflater.inflate(R.layout.grid_layout, null);

        final ImageButton grid_art = (ImageButton) gridView.findViewById(R.id.grid_art);

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build();
        imageloader = ImageLoader.getInstance();
        imageloader.init(config);
        imageloader.loadImage(blog_urls[position], new SimpleImageLoadingListener() {
            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

                grid_art.setImageBitmap(loadedImage);

                }
            });


    } else {


        gridView = (View) convertView;

    }

    return gridView;
}

@Override
public int getCount() {
    return urls.length;

}

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

@Override
public long getItemId(int position) {
    return 0;
}
公共类ImageAdapter扩展了BaseAdapter{
字符串[]URL=新字符串[10];
//……一些代码
类MyTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(Void…arg0){
//执行get请求并将“URL”数组填充10个值。。
返回null;
}
}
公共视图getView(int位置、视图转换视图、视图组父视图){
新建MyTask().execute();//执行异步任务
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图gridView=null;
if(convertView==null){
gridView=新视图(上下文);
//从grid_layout.xml获取布局
gridView=充气机。充气(R.layout.grid\u layout,null);
final ImageButton grid\u art=(ImageButton)gridView.findViewById(R.id.grid\u art);
ImageLoaderConfiguration config=新建ImageLoaderConfiguration.Builder(context.build();
imageloader=imageloader.getInstance();
init(config);
loadImage(blog_url[position],新的SimpleMapgeLoadingListener(){
@凌驾
public void onLoadingComplete(字符串imageUri、视图视图、位图加载图像){
grid_art.setImageBitmap(加载图像);
}
});
}否则{
gridView=(视图)convertView;
}
返回gridView;
}
@凌驾
public int getCount(){
返回url.length;
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
适配器在异步任务中加载10个图像url,并将其存储到url数组中

我使用下载并加载在URL中找到的图像到imagebutton作为背景


但是,只有一个imagebutton获得背景,其余为空。

更改
getView
方法如下:

    public View getView(int position, View convertView, ViewGroup parent) {

    new MyTask().execute(); // execute AsyncTask

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    //View gridView = null;

    MyView myView;
    if (convertView == null) {

        myView= new MyView();
        //gridView = new View(context);

        // get layout from grid_layout.xml
        convertView = inflater.inflate(R.layout.grid_layout, null);

        myView.grid_art = (ImageButton) convertView.findViewById(R.id.grid_art);
        convertView.setTag(myView);

    } else {
        myView= (MyView) convertView.getTag();
        //gridView = (View) convertView;
    }

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            context).build();
    imageloader = ImageLoader.getInstance();
    imageloader.init(config);

    imageloader.loadImage(blog_urls[position],
            new SimpleImageLoadingListener() {
                @Override
                public void onLoadingComplete(String imageUri, View view,
                        Bitmap loadedImage) {

                    myView.grid_art.setImageBitmap(loadedImage);

                }
            });

    return convertView;
}
其中
MyView
是:

 class MyView {
    ImageButton grid_art;
}

希望有帮助…

两个lint错误:网格艺术无法解决或不是setimagebitmap(LoadeImage)上的字段,并且gridView不能在返回gridView时解析为变量。好的,因此asynctask被多次调用,我认为调用一次就足够了,因为它会在运行过程中将值加载到URL数组中,而且当我上下滚动gridView时,图像的位置也会改变:oyes调用
asynctask
一次将足够了,然后在
onPostExecute
方法中,在
GridView
asynctask中设置适配器。代码写在适配器类本身中,这样我就可以在那里设置适配器。还有,我如何固定图像的位置