根据服务器响应动态加载图像列表

时间:2016-07-14 04:19:05

标签: android

我正在向服务器发送请求,服务器会发送设备名称列表。我想根据服务器返回的设备名称加载图像,此时服务器有200种类型的设备名称,每次发送请求时服务器都会返回随机设备名称列表。是否有一种基于响应服务器加载图像的有效方法。 任何帮助表示赞赏。 答复如下:

"器具":

{
    "id": 1,
    "type": "electronic",
    "make": "2015",
    "model": "2011",
    "serialNumber": "19218hdyew",
    "serviceTagNumber": "hfh251663",
    "name": "fridge"
},
{
    "id": 2,
    "type": "electronic",
    "make": "2015",
    "model": "2011",
    "serialNumber": "19218hdyew",
    "serviceTagNumber": "hfh251663",
    "name": "coffee"
},
{
    "id": 3,
    "type": "electronic",
    "make": "2015",
    "model": "2011",
    "serialNumber": "19218hdyew",
    "serviceTagNumber": "hfh251663",
    "name": "washing machine"
},
{
    "id": 4,
    "type": "electronic",
    "make": "2015",
    "model": "2011",
    "serialNumber": "19218hdyew",
    "serviceTagNumber": "hfh251663",
    "name": "fan"
},
{
    "id": 5,
    "type": "electronic",
    "make": "2015",
    "model": "2011",
    "serialNumber": "19218hdyew",
    "serviceTagNumber": "hfh251663",
    "name": "tv"
}

4 个答案:

答案 0 :(得分:1)

您的服务器正在返回图像名称,那么您应该创建一个类似

的方法
$result = shell_exec("php -S localhost:8000 &> /dev/null 2>&1");
echo $result;   // this does not show anything

其中imagename是您从服务器获取的字符串。

displayimage(String imagename) 方法中,您可以使用 setimageresource

答案 1 :(得分:0)

首先从服务器获取响应并解析它。有关详细信息,请参阅volleyRetrofit

从服务器获得响应后,从中获取imageUrl并执行延迟加载。请参阅PicassoFrescoUniversalImageLoaderGlide

要获取imageUrl,您需要将imageName与实际图像所在的服务器URL连接,或者告诉API开发人员在webservice中提供完整的图像URL。

您可以检查this线程是否有延迟加载

答案 2 :(得分:0)

使用Android Universal Image-Loader这是最好的

  

声明

    private ImageLoader imageLoader1;
  

创建

 imageLoader1 = ImageLoader.getInstance();

 imageLoader1.init(ImageLoaderConfiguration.createDefault(getActivity()));
  

no_image这里是一个可在Cache中没有任何图像加载的可绘制图像

   DisplayImageOptions
            options = new DisplayImageOptions.Builder()
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .showImageOnLoading(R.drawable.no_image) // resource or drawable
            .showImageForEmptyUri(R.drawable.no_image) // resource or drawable
            .showImageOnFail(R.drawable.no_image)
            .considerExifParams(true)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();

    imageLoader1.displayImage(yourpath.replace(" ", "%20"), ivprofile, options);

还使用它的依赖

with jar

  compile files('libs/universal-image-loader-1.9.5.jar')

  compile  'com.nostra13.universalimageloader:universal-image-loader:1.9.1'

您也可以使用Piccaso并同时滑行

答案 3 :(得分:0)

您需要根据服务器响应显示drawable中的图像。如果您可以选择将图像保存在资源文件夹中,

然后这是解决方案,

  1. 将图片移至资源文件夹。
  2. 然后尝试以下代码。

    AssetManager assetManager = context.getAssets();
    InputStream inputStream = null;
    
    try {
        inputStream = assetManager.open(imageName + ".extension");
    }    
    catch (IOException e) {
        e.printStackTrace();
    } 
    
    if (inputStream != null) {
        Bitmap bitmap = BitmapFactory.decodeStream(istr);
        imageView.setImageBitmap(bitmap);
    }