2012-12-24 3 views
0

이 질문을 올리는 많은 연구를 한 후에. 이러한 이미지의 URL을 포함하는 json 데이터의 이미지를 listview.I에 추가하면 다음 코드가 포함되지만 이미지를로드하기 위해 구현할 코드를 정확히 알지 못합니다.listview에서 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-images-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

좋습니다.하지만 어떻게 이러한 이미지를 목록보기로 가져 옵니까? 새 문자열 [] {TAG_TITLE, TAG_DATE, TAG_NAME, TAG_CONTENT}, 새로운 int [] { R.id.name, R.id.email, R.id.mobile, R.id.content}); – Rick

관련 문제