android示例中的自定义网格视图,包含来自后端的数据

时间:2015-11-07 16:15:12

标签: android json gridview

任何人都可以建议我使用tuto或链接来创建自定义网格视图以从服务器获取图像并缓存这些图像,数据应采用json格式。 请它对我很有用。我搜索了很多但找不到合适的例子。 请帮帮我。

1 个答案:

答案 0 :(得分:0)

如果您想管理来自互联网/资产/手机/其他人的图像,那么您可以使用这个神奇的图书馆Android universal image loader,您可以在这里找到有关这个功能强大的图书馆的信息。这个库可以帮助您将图像加载到您的应用程序,即使它们太大,并将它们存储在缓存中(即使您想将图像缓存在磁盘上或只是在内存中),请阅读完整的文章以确切知道如何用它

但是,如果你想亲自尝试一下,你只需要粘贴这些代码并享受测试它的乐趣

public class ImageManageUtils {

/** Tag para logs **/
   private static final String TAG_LOG = ImageManageUtils.class.getName();

public static void displayImage(ImageView view, String path, ImageLoadingListener listener) {
    ImageLoader loader = ImageLoader.getInstance();
    try {
        loader.displayImage(path, view, DEFAULT_DISPLAY_IMAGE_OPTIONS, listener);
    } catch (OutOfMemoryError e) {
        e.printStackTrace();
        loader.clearMemoryCache();
    }
}

public static void displayRoundImage(ImageView view, String path,
                                     ImageLoadingListener listener) {
    ImageLoader loader = ImageLoader.getInstance();
    try {
        loader.displayImage(path, view, ROUND_DISPLAY_IMAGE_OPTIONS, listener);
    } catch (OutOfMemoryError e) {
        e.printStackTrace();
        loader.clearMemoryCache();
    }
}

public static void loadImage(String path, ImageLoadingListener listener) {
    ImageLoader loader = ImageLoader.getInstance();
    try {
        loader.loadImage(path, DEFAULT_DISPLAY_IMAGE_OPTIONS, listener);
    } catch (OutOfMemoryError e) {
        e.printStackTrace();
    }
}

public static void removeFromCache(String url) {
    try {
        MemoryCacheUtils.removeFromCache(url, ImageLoader.getInstance().getMemoryCache());
        DiskCacheUtils.removeFromCache(url, ImageLoader.getInstance().getDiskCache());
    } catch (Exception e) {
        Log.e(TAG_LOG, DbdPlusUtils
                .format("Ocurrió un error eliminando la memoria caché de la url [%s]", url), e);
    }
}

private static final DisplayImageOptions.Builder DEFAULT_DISPLAY_IMAGE_OPTIONS_BUIDLER =
        new DisplayImageOptions.Builder()
                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
                .displayer(new FadeInBitmapDisplayer(300, true, false, false))
                .showImageForEmptyUri(R.drawable.default_image)
                .showImageOnLoading(R.drawable.default_image).considerExifParams(true)
                .showImageOnFail(R.drawable.default_image).cacheOnDisk(true)
                .cacheInMemory(true).bitmapConfig(Config.ARGB_8888);

private static final DisplayImageOptions DEFAULT_DISPLAY_IMAGE_OPTIONS =
        DEFAULT_DISPLAY_IMAGE_OPTIONS_BUIDLER
                .build();
private static final DisplayImageOptions ROUND_DISPLAY_IMAGE_OPTIONS =
        DEFAULT_DISPLAY_IMAGE_OPTIONS_BUIDLER
                .displayer(new RoundedBitmapDisplayer(500)).build();
}

(抱歉格式化代码,我来自手机)

您可以测试此类的方法如下

ImageManageUtils.displayImage(myImageView, "www.myurl.com/.../myImage.jpg", null)

或者

ImageManageUtils.displayImage(myImageView, "file://my_image_path_in_phone", null)

对于包含图片的GridView,这里有一个很好的例子link

我希望这会有所帮助