【问题标题】:add Image Bitmap to Simple Adapter Android将图像位图添加到简单适配器 Android
【发布时间】:2018-01-10 11:00:12
【问题描述】:

我在这里遇到了一些问题。假设我已经完美地将String 转换为Bitmap,但是当我想使用SimpleAdapter 显示到ListView 时,它在ImageView 中什么都不显示。

这里,我的快照代码:

我已经定义了变量:

imageProduct = (ImageView)findViewById(R.id.imageId);

这是从 JSON 获取和转换图像:

JSONArray productDetails = new JSONArray(jsonStr2);
for(int j=0 ;j<productDetails.length();j++){
    HashMap<String, Object> productData = new HashMap<String,Object>();     
    JSONObject q = productDetails.getJSONObject(j);
    String productName = q.getString("Name");
    String productPrice = q.getString("Price");
    String productImage = q.getString("Image");
    String encodeImage = productImage.replace("data:image/jpeg;base64,","").replace("data:image/png;base64,","");
    byte[] decodedString = Base64.decode(encodeImage,Base64.DEFAULT);
    Bitmap base64Bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
    productData.put("productName",productName);
    productData.put("productPrice",productPrice);
    productData.put("base64Bitmap",base64Bitmap);
    orderDetailList.add(productData);
}

我想用这个适配器显示图像:

@Override
protected void onPostExecute(Object result) {
    super.onPostExecute(result);
    if (pDialog.isShowing()) {
        pDialog.dismiss();
    }

    SimpleAdapter adapter1 = new SimpleAdapter(
                    OrderDetailActivity.this, orderDetailList,
                    R.layout.list_item_product, new String[]{"productName","productPrice","base64Bitmap"},
                    new int[]{R.id.productName,R.id.productPrice,R.id.imageId}
            );
    lv.setAdapter(adapter1);
}

“名称”和“价格”显示完美,但图像没有。我该怎么办?

【问题讨论】:

    标签: android listview bitmap imageview simpleadapter


    【解决方案1】:

    问题已解决,据此:Displaying bitmap image in imageview by simple adapter

    只需创建该类并将其用于您拥有的简单适配器。 干杯!

    【讨论】:

      【解决方案2】:

      只要按照这个代码就可以很容易...

          adapter1.setViewBinder(new SimpleAdapter.ViewBinder(){
      
                      @Override
                      public boolean setViewValue(View view, Object data,
                                                  String textRepresentation) {
                          if( (view instanceof ImageView) & (data instanceof Bitmap) ) {
                              ImageView iv = (ImageView) view;
                              Bitmap bm = (Bitmap) data;
                              iv.setImageBitmap(bm);
                              return true;
                          }
                          return false;
      
                      }
      
                  });
      
          lv.setAdapter(adapter1);
      

      希望你喜欢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-23
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 2012-02-11
        • 1970-01-01
        相关资源
        最近更新 更多