2012-12-24 62 views
0

经过大量研究发布此问题后。从包含这些图像url的json数据中添加图像到listview.I中包含以下代码,但不知道要实现哪些代码来加载图像。在列表视图中从json url加载图片

 public class MainActivity extends ListActivity { 



    // url to make request 
    private static String url = "http://website/?json=get_recent_posts"; 

    // JSON Node names 
    private static final String TAG_POSTS = "posts"; 
    private static final String TAG_ID = "id"; 
    private static final String TAG_TITLE = "title"; 
    private static final String TAG_DATE = "date"; 
    private static final String TAG_CONTENT = "content"; 
    private static final String TAG_AUTHOR = "author"; 
    private static final String TAG_NAME = "name"; 
    private static final String TAG_IMAGES = "images"; 
    private static final String TAG_THUMBNAIL = "thumbnail"; 

    // contacts JSONArray 
    JSONArray posts = null; 

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



    // Hashmap for ListView 
    ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); 

    // Creating JSON Parser instance 
    JSONParser jParser = new JSONParser(); 

    // getting JSON string from URL 
    JSONObject json = jParser.getJSONFromUrl(url); 

    try { 
     // Getting Array of Contacts 
     posts = json.getJSONArray(TAG_POSTS); 

     // looping through All Contacts 
     for(int i = 0; i < posts.length(); i++){ 
      JSONObject c = posts.getJSONObject(i); 

      // Storing each json item in variable 
      String id = c.getString(TAG_ID); 
      String title = c.getString(TAG_TITLE); 
      String date = c.getString(TAG_DATE); 
      String content = c.getString(TAG_CONTENT); 
      // to remove all <P> </p> and <br /> and replace with "" 
      content = content.replace("<br />", ""); 
      content = content.replace("<p>", ""); 
      content = content.replace("</p>", ""); 

      // Author is agin JSON Object 
      JSONObject author = c.getJSONObject(TAG_AUTHOR); 
      String name = author.getString(TAG_NAME); 

      JSONObject images = c.getJSONObject(TAG_IMAGES); 
      String thumbnail = images.getString(TAG_THUMBNAIL); 
      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 

      // adding each child node to HashMap key => value 
      map.put(TAG_ID, id); 
      map.put(TAG_TITLE, title); 
      map.put(TAG_DATE, date); 
      map.put(TAG_NAME, name); 
      map.put(TAG_CONTENT, content); 
      // adding HashList to ArrayList 
      contactList.add(map); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 


    /** 
    * Updating parsed JSON data into ListView 
    * */ 
    ListAdapter adapter = new SimpleAdapter(this, contactList, 
      R.layout.list_row, 
      new String[] { TAG_TITLE, TAG_DATE, TAG_NAME, TAG_CONTENT }, new int[] { 
        R.id.name, R.id.email,R.id.mobile, R.id.content }); 

    setListAdapter(adapter); 

    // selecting single ListView item 
    ListView lv = getListView(); 

    // Launching new screen on Selecting Single ListItem 
    lv.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // getting values from selected ListItem 
      String title = ((TextView) view.findViewById(R.id.name)).getText().toString(); 
      String date = ((TextView) view.findViewById(R.id.email)).getText().toString(); 
      String name = ((TextView) view.findViewById(R.id.mobile)).getText().toString(); 
      String content = ((TextView) view.findViewById(R.id.content)).getText().toString(); 

      // Starting new intent 
      Intent in = new Intent(getApplicationContext(), SampleDesp.class); 
      in.putExtra(TAG_TITLE, title); 
      in.putExtra(TAG_DATE, date); 
      in.putExtra(TAG_NAME, name); 
      in.putExtra(TAG_CONTENT, content); 
      startActivity(in); 

     } 
    }); 

} 

JSON数据格式

{ "status": "ok","count": 10,"count_total": 429,"pages": 43,"posts": [ {  "id": 2512,"title": "Sansui Eq Sound Processor 2 Mic option in a single unit.","content": "<p>Sansui Eq Sound Processor 2 Mic option in a single unit For sale .<br />\nFor more details contact<br />\n9886673699</p>\n", "date": "2012-12-24 09:39:53", 
"author": {"name": "sales" }, "attachments": [{ "images": {"thumbnail": { 
"url": "http://site/wp-content/uploads/2012/12/372967-50x37.jpg" 
} } }}],....... 
+1

检查这个https://github.com/nostra13/Android-Universal-Image-Loader,这lib用于从网站下载图像,你可以显示在你的图像视图,看看这里的例子也在这 – Pratik

+1

http://stackoverflow.com/questions/13698135/android-loading-image-from-json-url-into- listview –

+1

参考这个http://stackoverflow.com/questions/541966/how-do-i-do-a-lazy-load-of-i-f-in-listview –

回答

1

来实现Load image代码:

private Bitmap DownloadImage(String URL) 
    {   
//  System.out.println("image inside="+URL); 
     Bitmap bitmap = null; 
     InputStream in = null;   
     try { 
      in = OpenHttpConnection(URL); 
      bitmap = BitmapFactory.decodeStream(in); 
      in.close(); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
//  System.out.println("image last"); 
     return bitmap;     
    } 
    private InputStream OpenHttpConnection(String urlString) 
      throws IOException 
      { 
       InputStream in = null; 
       int response = -1; 

       URL url = new URL(urlString); 
       URLConnection conn = url.openConnection(); 

       if (!(conn instanceof HttpURLConnection))      
        throw new IOException("Not an HTTP connection"); 

       try{ 
        HttpURLConnection httpConn = (HttpURLConnection) conn; 
        httpConn.setAllowUserInteraction(false); 
        httpConn.setInstanceFollowRedirects(true); 
        httpConn.setRequestMethod("GET"); 
        httpConn.connect(); 

        response = httpConn.getResponseCode();     
        if (response == HttpURLConnection.HTTP_OK) 
        { 
         in = httpConn.getInputStream();         
        }      
       } 
       catch (Exception ex) 
       { 
        throw new IOException("Error connecting");    
       } 
       return in;  
    } 
+0

好的,但你如何获得这些图像到列表视图? new String [] {TAG_TITLE,TAG_DATE,TAG_NAME,TAG_CONTENT},new int [] {^^^^^^^^^^^^^^^^^^^^^^^^^^ – Rick