Android - téléchargement de l'image à partir du web, l'enregistrement dans la mémoire interne de l'emplacement privé sur l'app, l'affichage de l'élément de liste

Ce que je suis en train de faire est ceci: je veux que mon application à télécharger une image à partir d'Internet et l'enregistrer sur la mémoire interne du téléphone dans un endroit qui est privé de l'application. Si il n'y a pas d'image disponible pour l'élément de la liste (c'est à dire qu'il ne peut pas être trouvé sur l'Internet), je veux, par défaut, une image d'espace réservé à l'affichage. C'est l'image que j'ai définie dans mon list_item_row.xml fichier en tant que par défaut.

Dans mon ListActivity fichier, je fais appel à une instance d'un CustomCursorAdapter classe que j'ai écrit. C'est dans CustomCursorAdapter où je suis une itération à travers tous les éléments de la liste et la définition de ce contenu doit être mappé à la vue, y compris le fichier de l'image en essayant de lire à partir de la mémoire interne.

J'ai vu plusieurs questions sur ce sujet, mais les exemples sont spécifiques à l'externe de la mémoire du téléphone (par exemple SDCard), impliquent que l'économie des chaînes au lieu d'images, ou implique l'utilisation de Bitmap.CompressFormat de réduire la résolution du fichier (ce qui est inutile dans mon cas, comme ces images de petites vignettes de déjà-petite résolution). Essayant de code de chaque exemple a été difficile, d'où ma demande sur mon exemple précis.

En ce moment, je crois que j'ai écrit le code est valide, mais aucune image n'est l'affichage de ma liste d'éléments, y compris la valeur par défaut de l'espace réservé d'image. Je ne sais pas si le problème est causé par les invalides télécharger/enregistrer le code, ou invalide lire le code - cela n'aide pas que je ne sais pas comment faire pour vérifier la mémoire interne pour voir si l'image existe.

De toute façon, voici mon code. Toute aide serait grandement appréciée.

ProductUtils.java

public static String productLookup(String productID, Context c) throws IOException {
    URL url = new URL("http://www.samplewebsite.com/" + productID + ".jpg");
    URLConnection connection = url.openConnection();
    InputStream input = connection.getInputStream();
    FileOutputStream output = 
        c.openFileOutput(productID + "-thumbnail.jpg", Context.MODE_PRIVATE);
    byte[] data = new byte[1024];

    output.write(data);
    output.flush();
    output.close();
    input.close();
}

CustomCursorAdapter.java

public class CustomCursorAdapter extends CursorAdapter {
    public CustomCursorAdapter(Context context, Cursor c) {
        super(context, c);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnail);

        String fileName = 
                cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_IMAGE_FILE_PATH));

        Bitmap bMap = BitmapFactory.decodeFile(fileName);
        thumbnail.setImageBitmap(bMap);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.list_item_row, parent, false);
        bindView(v, context, cursor);
        return v;
    }
}

OriginalL'auteur Keeb13r | 2010-11-15