我正在开发 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);
}
}