2012-11-28 41 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高度)创建图像的缩略图。