2017-09-08 80 views
0

如何將我的數據庫中的圖像加載到android應用程序中並將其放入列表視圖中。數據庫是MySQL和圖像以PNG格式存儲如何在android中加載圖像

這是我的代碼檢索我的數據庫中的數據。該a_emblem是ImageView的,在我的JSON鏡像文件

private void showResult() { 
     JSONObject jsonObject; 
     ArrayList<HashMap<String, String>> list = new ArrayList<>(); 
     try { 
      jsonObject = new JSONObject(JSON_STRING); 
      JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY1); 

      for (int i = 0; i < result.length(); i++) { 
       JSONObject jo = result.getJSONObject(i); 
       String a_shortcut = jo.getString(Config.TAG_a_shortcut); 
       String a_emblem = jo.getString(Config.TAG_a_emblem); 
       String gold = jo.getString(Config.TAG_gold); 
       String silver = jo.getString(Config.TAG_silver); 
       String bronze = jo.getString(Config.TAG_bronze); 
       String total = jo.getString(Config.TAG_total); 
       HashMap<String, String> match = new HashMap<>(); 
       match.put(Config.TAG_a_shortcut, a_shortcut); 
       match.put(Config.TAG_a_emblem, a_emblem); 
       match.put(Config.TAG_gold, gold); 
       match.put(Config.TAG_silver, silver); 
       match.put(Config.TAG_bronze, bronze); 
       match.put(Config.TAG_total, total); 
       list.add(match); 

      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     ListAdapter adapter = new SimpleAdapter(
       getActivity(), list, R.layout.standlayout, 
       new String[]{Config.TAG_a_shortcut, Config.TAG_a_emblem, Config.TAG_gold, Config.TAG_silver, Config.TAG_bronze, Config.TAG_total}, 
       new int[]{R.id.shortcut, R.id.img, R.id.gold, R.id.silver, R.id.bronze, R.id.total}); 

     lv.setAdapter(adapter); 
    } 

How the Image are stored in my database

+0

我不認爲這可以回答沒有更多的上下文。這些圖像如何存儲在數據庫中?什麼是數據庫呢? –

+0

你應該使用一個自定義的Adapter類來做到這一點。 – sam

+0

@ KenY-N添加了數據庫和圖片如何存儲 – orange

回答

0

這裏是你可以做什麼。

  1. 將圖像轉換爲位圖。

  2. 將圖像轉換爲base64字符串並將此base64字符串保存到數據庫中。

  3. 在適配器中使用base64字符串時將其轉換回圖像。

  4. 在ImageView中設置位圖。

它應該肯定工作。代碼以供參考

  1. 轉換可繪製爲位圖

    Bitmap icon = BitmapFactory.decodeResource(context.getResources(), 
                R.drawable.icon_resource); 
    
  2. 使用以下方法將位圖轉換爲一個字節數組:

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
    byte[] byteArray = byteArrayOutputStream .toByteArray(); 
    

    到一個base64串從字節編碼array:

    String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT); 
    

    在數據庫中保存encoded

  3. 轉換中的Base64字符串返回到Bitmap

    byte[] decodedString = Base64.decode(encoded , Base64.DEFAULT); 
    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
    
  4. 將位圖圖像視圖:

    imageView.setImageBitmap(bitmap); 
    
0

使用畢加索或滑行這裏是網址爲您

Picasso

Glide