1

私はAndroidが初めてなので、しばらくお待ちください。画像のグリッドビューを描画するためにこのコードを作成しています.asynctaskを使用していますが、asynctaskが実行されているため、画像のバインドが遅くなり、画像が表示されません.デバッグすると表示されるのは、それを遅らせて問題を知っているからですが、誰かが私のために構文を修正してくれることを願っています。

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListAdapter;

public class ImagesAdapter extends BaseAdapter implements ListAdapter {
private Context mContext;
ImageView currentImageView;
Bitmap bmImg;

// Constructor
public ImagesAdapter(Context c) {
    super();
    mContext = c;
    GridViewConfig.addImageUrls();
}

@Override
public int getCount() {
    return GridViewConfig.getResim_list().size();
}

@Override
public Object getItem(int position) {
    return GridViewConfig.getResim_list().get(position);

}

@Override
public long getItemId(int position) {
    return position;
}

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

    ImageView imageView;

    if (convertView == null)

    {

        imageView = new ImageView(mContext);

        imageView.setLayoutParams(new GridView.LayoutParams(100, 100));

        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

        imageView.setPadding(5, 5, 5, 5);

    } else {

        imageView = (ImageView) convertView;

    }
    downloadFile(GridViewConfig.getResim_list().get(position));

    imageView.setImageBitmap(bmImg);

    // imageView.setImageDrawable(LoadImageFromURL(GridViewConfig
    // .getResim_list().get(position)));

    return imageView;

}

void downloadFile(String fileUrl) {

    AsyncTask<String, Object, String> task = new AsyncTask<String, Object, String>() {

        @Override
        protected String doInBackground(String... params) {
            URL myFileUrl = null;
            try {
                myFileUrl = new URL(params[0]);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                HttpURLConnection conn = (HttpURLConnection) myFileUrl
                        .openConnection();
                conn.setDoInput(true);
                conn.connect();
                InputStream is = conn.getInputStream();

                bmImg = BitmapFactory.decodeStream(is);

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(String unused) {
        /*  if (currentImageView == null) {
                currentImageView = new ImageView(mContext);
            }
            currentImageView.setImageBitmap(bmImg); */
        }
    };
    task.execute(fileUrl);

}

gridviewconfig クラスは必要な画像を返します。

4

1 に答える 1

0

http://developer.android.com/training/displaying-bitmaps/index.htmlを見てください。グリッドと多くの便利なものを備えた BitmapFun サンプル プロジェクト/アプリがあります。車輪を再発明するのではなく、Android の作成者である Google のコードを使用することを
お勧めします。

于 2013-04-26T13:09:21.813 に答える