2014-02-07 35 views
1

HashMap中每个HashMap密钥的密钥"KEY_PHOTO"的值包含一个映射到我需要放入R.id.imageView的映像的URL,如何将url转换为Bitmap将url转换为HashMap中的图片

public class MainActivity extends Activity { 

    private static final String TAG = "TAG"; 
    ArrayList<HashMap<String, String>> usersHashMap; 
    ListView listView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     usersHashMap = new ArrayList<HashMap<String, String>>(); 
     listView = (ListView) findViewById(R.id.listView1); 

     new readJson().execute(); 
    } 


    class readJson extends AsyncTask<String, Void, String> { 

     @Override 
     protected void onPreExecute() { 

      super.onPreExecute(); 
     } 

     @Override 
     protected String doInBackground(String... arg) { 


      JSONParser jParser = new JSONParser(); 
      JSONObject json = null; 
      json = jParser.getJSONFromUrl("link"); 

      try { 
       JSONArray users = json.getJSONArray("users"); 
       for (int i = 0; i < users.length(); i++) { 

        JSONObject obj = users.getJSONObject(i); 
        HashMap<String, String> map = new HashMap<String, String>(); 

        map.put("KEY_NAME", obj.getString("name")); 
        map.put("KEY_PHOTO", obj.getString("photo")); 
        map.put("KEY_AGE", obj.getString("age")); 

        usersHashMap.add(map); 
       } 

      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      Log.d(TAG, ""+json); 

      return null; 
     } 

     @Override 
     protected void onPostExecute(String result) { 

      SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), usersHashMap, R.layout.list_view, 
        new String[] { "KEY_NAME", "KEY_AGE", "KEY_PHOTO" }, 
        new int[] { R.id.list_headline,R.id.list_info,R.id.imageView }); //set photo url to R.id.imageView 

      listView.setAdapter(adapter); 

      super.onPostExecute(result); 

     } 

    } 

} 
+0

你必须从网址下载图片。使用uil或带缓存的picasso使用懒惰列表的COnsider可能有所帮助 – Raghunandan

回答

1

"KEY_PHOTO"主要提取自HashMap值。然后,将以下映射应用于该值以获取Bitmap

您可以将字符串URL转换为Bitmap对象与下面的代码片段:

URL url = new URL(INSERT_STRING_URL_HERE); 
HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
con.setDoInput(true); 
con.connect(); 
InputStream input = con.getInputStream(); 
Bitmap bitmap = BitmapFactory.decodeStream(input); 

请务必使用URL的字符串替换INSERT_STRING_URL_HERE