【问题标题】:Android Listview and image decodingAndroid Listview 和图像解码
【发布时间】:2014-02-01 19:05:07
【问题描述】:
        try
        {
            if(json.getString(KEY_SUCESS)!=null)
            {
                String res=json.getString(KEY_SUCESS);
                if(Integer.parseInt(res)==1)
                {
                    JSONObject json_user = json.getJSONObject("user");
                    name=json_user.getString(KEY_NAME);

                    String image=json_user.getString(KEY_PHOTO);

                    map.put(KEY_NAME, name);

                    map.put(KEY_PHOTO, image);

                    List.add(map);


                }
            }

照片是一个在base64 中编码的字符串,我想对其进行解码并添加到创建的地图中,但它需要两个字符串值,如果我创建一个新地图,它不会添加到我的列表视图中已经创造出来了 , 我要做的是解码字符串图像以将其设置为ImageView

【问题讨论】:

    标签: android image parsing listview decoding


    【解决方案1】:

    您不会显示地图的定义位置,但您可以选择其键/值对的对象类型。

    听起来您想获取字符串,解码为位图,然后将其存储到地图中。

    以这种方式定义地图:

    Map map = new HashMap<String, Bitmap>();
    

    然后这样保存:

    String image=json_user.getString(KEY_PHOTO);
    byte[] decodedString = Base64.decode(image, Base64.DEFAULT);
    Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
    map.put(KEY_PHOTO, bitmap);
    

    如果要将位图设置为 ImageView,请执行以下操作。

    imageView.setImageBitmap(bitmap);
    

    【讨论】:

    • 我的地图采用 2 个值,一种类型是字符串字符串,用于名称和图像,其字符串位图,所以我如何结合使用这两者
    • 我仍然不是 100% 清楚这个问题。但是现在我认为您要问的是如何将两种不同类型的对象值添加到同一个地图中,对吗?在这种情况下,您将定义映射以将字符串作为键,将对象作为值。然后您可以将字符串或位图添加到同一个地图中。 [new Hashmap();]
    • 是的,在按照你所说的并在地图中传递位图后,你明白了我的意思,它给出了解码器错误-->>解码返回错误
    • {"tag":"contact","success":1,"error":0,"user":{"name":"aa","photo":"iVBORw0KGgoAAAANSUhEUgAAAW0AAAGQCAYAAABlDTHlAAAABHNCSVQICAgIfAhkiAAAIABJREFU eJzsnXeYVdXV\ / z9771Nunc7M0AcBQQUBQRBEQVGwd9TEDmqKienRRJOQmNeo0agxGmMssSco2HtD EQtSpIqAiPQyw \ / R772l7 \ / \ / 44V95f3pi8eRMjId7P8 \ / A8MM8wZ5199qyz7tprfZegRIl \ / A4wxQghh PK + frj7 + 2uTly42YNk3vSrtK“}} 01-14 19:36:38.251:d / dalvikvm(1296):WAIT_FOR_CONCURRENT_GC阻断01-14 19点36: 38.532: D/skia(1296): --- 解码器->解码返回假
    • 我猜你正在解码的字符串有一些问题。你确定它是正确的吗?您可以尝试使用在线 Base64 解码器对其进行解码,以验证您是否拥有正确的 base64 字符串。 motobit.com/util/base64-decoder-encoder.asp
    【解决方案2】:

    使用您需要解码的字符串的新条目更新您的列表视图使用的适配器。

    然后在您更新其中的数据后,从您的适配器调用notifyDataSetChanged()

    【讨论】:

    • 您能否发布您的适配器代码,我将根据您的情况进行解释?
    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多