0

我使用 Asynctask 来下载图片,这是从自定义适配器的 getview 方法执行的。此自定义适配器设置为列表视图,但列表视图中不显示任何内容。我想在单击主要活动的进度条时显示列表视图可能是什么问题?请任何人都可以帮助我。我的代码是这样的:@Override public View getView(int position, View convertView, ViewGroup parent) {

        inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        if (convertView == null){
            convertView = inflater.inflate(R.layout.show_image, null);
            imageview = (ImageView) convertView.findViewById(R.id.imageview);
            convertView.setTag(imageview);
            new DownloadTask().execute(images.get(position), imageview);                 
        }
        return convertView;
    }       
}

private class DownloadTask extends AsyncTask<Object, Integer, Bitmap>{
    ImageView iv;

    @Override
    protected Bitmap doInBackground(Object... params) {         

        String url = (String) params[0];
        iv = (ImageView) params[1];     
        Bitmap bmap = null;

        try {               
            bmap = getBitmap(url);
        } catch (IOException e) {

            e.printStackTrace();
        }   
            return bmap;
    }

    public Bitmap getBitmap(String urlstring) throws IOException{

        URL _url = new URL(urlstring);
        HttpURLConnection connection = (HttpURLConnection) _url.openConnection();

        InputStream stream = connection.getInputStream();

        Bitmap bitmap = BitmapFactory.decodeStream(stream);

        return bitmap;
    }

    @Override
    protected void onPostExecute(Bitmap result) {           
        super.onPostExecute(result);

        iv.setImageBitmap(result);          

    }

progress.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            progress.setVisibility(progress.GONE);
            adapter = new ImageAdapter(getApplicationContext(), R.layout.show_image,imagenames); 

            listview.setAdapter(adapter);
            adapter.notifyDataSetChanged();

            }
    });
4

1 回答 1

0
ImageView imageView; // Global variable
//not ImageView in Asynctask, iv = (ImageView) params[1]; 

在 doInBackground

try {               
     publishProgress(url);
} catch (IOException e) {
     //...
}

@Override    
protected void onProgressUpdate(String... urlstring) {
    //do what you to in getBitmap
    //but not return it
    imageView.setImageBitmap(bitmap);
}

你应该使用onProgressUpdate

于 2013-06-18T03:16:53.463 回答