0

我正在开发 Android 项目,我需要从 Facebook 获取图像并将其显示在 UI 上。我能够获取我需要执行的 Facebook 图像的 URL,以便我可以获取图像。

下面是我需要执行以获取我的 facebook 图像的 URL,以及我从中获取的 URL 下面的 URL userList.get(position).getPhoto()

http://graph.facebook.com/fb-user-id/picture

下面是我用来在后台获取图像的代码,但不知何故,我的后台任务没有被调用,Facebook 图像也没有显示在我的 UI 上。

而且也没有错误。

有没有更好的方法来获取图像并将其显示在 UI 上?

/**
 * Depending on the gender, set the image properly for the users
 */
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;

if (convertView == null) {
    vi = inflater.inflate(R.layout.item, null);
}
TextView text = (TextView) vi.findViewById(R.id.text);
TextView text1 = (TextView) vi.findViewById(R.id.text1);
ImageView image = (ImageView) vi.findViewById(R.id.image);
ImageView genderImage = (ImageView) vi.findViewById(R.id.image1);
text.setText("" + userList.get(position).getFirstName() + " "
    + userList.get(position).getLastName());
text1.setText("" + userList.get(position).getDistance() + " meter");

if (userList.get(position).getGender() == 1) {
    genderImage.setImageResource(R.drawable.male_sign);
} else {
    genderImage.setImageResource(R.drawable.female_sign);
}

//Calling background task to get the image but somehow, it's not working
new DownloadImageTask(image).execute(userList.get(position).getPhoto());

return vi;
}

下面是一个类,它将在背景中获取图像,然后在 UI 上显示它。

/**
     * A simple class to do the task in background so that it can download the image without blocking the main thread
     * 
     */
    private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
        InputStream in = new java.net.URL(urldisplay).openStream();
        mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
    }
4

1 回答 1

1

您是否尝试使(ImageView) 图像成为全局变量?

不需要在 DownloadImageTask 中发送,只需

image.setImageBitmap(result);

在我的代码中,我将其设置在onProgressUpdate

于 2013-06-18T03:41:57.560 回答