2012-11-28 76 views
0

我已經完成了json解析器獲取網站內容的工作,我的第一個頁面顯示了listview中的幾個工作列表,它應該只包含id,日期和作者姓名,點擊單一項後列表,我應該獲取圖像和數據內容,我能夠獲得內容,但我不知道如何獲取單個項目列表中的圖像。 有人知道如何做到這一點?如何在使用json解析器中獲取圖像

public class AndroidJSONParsingActivity extends ListActivity { 

// url to make request 
private static String url = "http://www.mysite.com/jobs/?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"; 



// contacts JSONArray 
JSONArray posts = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.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); 

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


      // 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_item, 
      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(), SingleMenuItemActivity.class); 
      in.putExtra(TAG_TITLE, title); 
      in.putExtra(TAG_DATE, date); 
      in.putExtra(TAG_NAME, name); 
      in.putExtra(TAG_CONTENT, content); 
      startActivity(in); 

     } 
    }); 

爲singlemenu列表代碼

公共類SingleMenuItemActivity延伸活動{

// JSON node keys 
private static final String TAG_TITLE = "title"; 
private static final String TAG_DATE = "date"; 
private static final String TAG_NAME = "name"; 
private static final String TAG_CONTENT = "content"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.single_list_item); 

    // getting intent data 
    Intent in = getIntent(); 

    // Get JSON values from previous intent 
    String title = in.getStringExtra(TAG_TITLE); 
    String date = in.getStringExtra(TAG_DATE); 
    String name = in.getStringExtra(TAG_NAME); 
    String content = in.getStringExtra(TAG_CONTENT); 

    // Displaying all values on the screen 
    TextView lblName = (TextView) findViewById(R.id.name_label); 
    TextView lblCost = (TextView) findViewById(R.id.email_label); 
    TextView lblDesc = (TextView) findViewById(R.id.mobile_label); 
    TextView lblCont = (TextView) findViewById(R.id.content_label); 

    lblName.setText(title); 
    lblCost.setText(date); 
    lblDesc.setText(name); 
    lblCont.setText(content); 
} 

}

+0

你的圖像是鏈接或base64字符串?這個問題很受歡迎。您可以搜索並獲得許多結果。 [示例](http://stackoverflow.com/q/9350576/1050058) –

回答

0

會有一個網頁鏈接的圖像,你可以從下載Web圖像下面的代碼。

public static Drawable LoadImageFromWebOperations(String url) { 
    try { 
    InputStream is = (InputStream) new URL(url).getContent(); 
    Drawable d = Drawable.createFromStream(is, "src name"); 
    return d; 
} catch (Exception e) { 
    return null; 
} 
} 
+0

我想讓這些圖像與工作描述一起修復到列表視圖中,那麼如何調整和修復列表標籤左角的圖像? – user1796350

0

一旦下載圖片,使用createScaledBitmap(位圖SRC,INT dstWidth,INT dstHeight,布爾過濾器),或者對於Android2.2的和時,使用位圖extractThumbnail(位圖源,INT寬度,INT高度)創建圖像的縮略圖。