2017-09-08 15 views
0

データベースから自分のアンドロイドアプリケーションに画像を読み込んでリストビューに配置するにはどうすればよいですか?データベースはMySQLであり、画像はpng形式で保存されていますイメージをアンドロイドで読み込むには

私のデータベースのデータを取得するためのコードです。 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

カスタムアダプタクラスを使用してください。 – sam

+0

@ KenY-Nがデータベースを追加し、画像の保存方法 – orange

答えて

0

は、あなたが何ができるかです。

  1. イメージをビットマップに変換します。

  2. イメージをbase64文字列に変換し、このbase64文字列をデータベースに保存します。

  3. アダプタで使用しているときにbase64文字列をイメージに変換し直します。

  4. ImageViewでビットマップを設定します。

間違いなく動作するはずです。

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

バイトからbase64文字列をエンコードするために:バイト配列にビットマップを変換するには、次のメソッドを使用します

Bitmap icon = BitmapFactory.decodeResource(context.getResources(), 
            R.drawable.icon_resource); 
  • をビットマップに参照

    1. コンバート引き出し可能のコード配列:

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

      encodedをデータベースに保存します。

    2. バックBitmapにbase64文字列を変換します

      byte[] decodedString = Base64.decode(encoded , Base64.DEFAULT); 
      Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
      
    3. は、画像表示にビットマップを設定します。

      imageView.setImageBitmap(bitmap); 
      
  • 0

    使用ピカソやここで滑空はあなたのためのURLです

    Picasso
    または
    Glide

    関連する問題