update: The code is fine. It was simply a wrong pointer to the database.
I’m using JSONParser method to make http request to get JSON data and returns a JSONObject from database. There is no problem getting the JSONObject and display the String such as the name and email, but It does not retrieving the URL of the images.
I don’t get any error but it’s just displaying empty fields.
However, if I make this line from
String imageURL = directory.getString(TAG_IMG);
to this
String imageURL = "http://mywebsite.com/images/photo1.png";
It works fine.
//URL to make request
private static final String url_veiw_directory = "http://www.myweb.com/android/include/directory_detail_me.php";
private static final String TAG_SUCCESS = "success";
private static final String TAG_DIRECTORY = "directory";
private static final String TAG_ID = "user_id";
private static final String TAG_IMG = "photo"; // Image URLs stored in the DB
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
//Get JSONObject by httpRequest
JSONObject json = jsonParser.makeHttpRequest(url_veiw_directory, "GET", params);
Log.d("my profile", json.toString());
if (success == 1) {
JSONArray directoryObj = json.getJSONArray(TAG_DIRECTORY);
JSONObject directory = directoryObj.getJSONObject(0);
//User Image
int loader = R.drawable.loader;
String imageURL = directory.getString(TAG_IMG);
ImageView imagePhoto = (ImageView) findViewById(R.id.photo);
ImageLoader imgLoader = new ImageLoader(getApplicationContext());
imgLoader.DisplayImage(imageURL, loader, imagePhoto);
//User Name and Email
TextView txtName = (TextView) findViewById(R.id.name);
TextView txtEmail = (TextView) findViewById(R.id.email);
txtName.setText(directory.getString(TAG_NAME));
txtEmail.setText(directory.getString(TAG_EMAIL));
//Image Loader Class
public void DisplayImage(String url, int loader, ImageView imageView)
{
stub_id = loader;
imageViews.put(imageView, url);
Bitmap bitmap=memoryCache.get(url);
if(bitmap!=null)
imageView.setImageBitmap(bitmap);
else
{
queuePhoto(url, imageView);
imageView.setImageResource(loader);
}
}
private void queuePhoto(String url, ImageView imageView)
{
PhotoToLoad p=new PhotoToLoad(url, imageView);
executorService.submit(new PhotosLoader(p));
}
private Bitmap getBitmap(String url)
{
File f=fileCache.getFile(url);
//from SD cache
Bitmap b = decodeFile(f);
if(b!=null)
return b;
//from web
try {
Bitmap bitmap=null;
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is=conn.getInputStream();
OutputStream os = new FileOutputStream(f);
ImageUtils.CopyStream(is, os);
os.close();
bitmap = decodeFile(f);
return bitmap;
} catch (Exception ex){
ex.printStackTrace();
return null;
}
}
Most likely reason is that
imageURLstring is ether empty or what maybe more likely (since you are pulling it from DB) it’s escaped to the form that makes it unusable as URL. I would suggest to print it out and see the value at which point you probably can unescape it or do some character substitutionYou may see something like
http%3A//mywebsite.com/images/photo1.png