2012-07-16 18 views
0

以下是該我從一個APIAndroid的JSON解析 - 如何根據從列表視圖標籤獲取值

{ 
    "list": { 
     "items": [ 
      "About Us", 
      "Services", 
      "Working With", 
      "Officehours", 
      "Useful Links", 
      "Terms & Conditions", 
      "Go to Website" 
     ] 
    }, 
    "data": 
    { 
     "about us": { "description": " Aaaaaaaa" }, 
     "services": { "description": " Baaaaaaa." }, 
     "working with": { "description": "Caaaaaa" }, 
     "officehours": { "title": "Office Hours:","timing": "09:00am - 06:00pm"}, 
     "useful links": { "description": [ 
       { 
        "name": "One", 
        "link": "http://www.google.com/" 
       }, 
       { 
        "name": "Two", 
        "link": "http://www.yahoo.com" 
       }]}, 
     "terms & conditions": { "description": "Daaaaaaaaa" }, 
     "go to website": { "link": "http: //www.amazon.com/" }, 
    } 
} 

獲得在上面的JSON數據JSON數據中的「名單」的價值觀json數組將在listview中顯示。我已經將它們添加到數組列表中,並以列表視圖顯示。

現在,當用戶點擊列表視圖時,他們對應的數據會顯示在下一個活動中。例如,如果用戶點擊About US text of listview,那麼我如何在下一個活動中顯示description Aaaaaaa

像這樣列表視圖中的每個項目我必須打開不同的活動。 如果內標記是description我不得不打開activity1 如果內標記是title我不得不打開activity2 如果內標記是link我不得不打開activity3 如果內標記是description是是一個JSON陣列型,必須打開activity4

我不應該在代碼中熱碼編碼,如"about us", "services","working with","officehours","useful links","terms & conditions", "go to website"

在我OnItemClickListener我這樣做在某些情況下,我得到一個異常說有這樣的「說明」沒有JSON值以下

try 
    { 
    JSONObject locarray = new JSONObject(Appconstant.dataObj.get(0).toString());   
    String txt_data = locarray.getJSONObject(about.get(arg2).toLowerCase()).getString("description"); 
    } 
    catch(Exception e) 
    { 
     Log.e("Exception @ json 1",""+e); 
    } 

如何得到這個工作要做,請幫我做這件事的

+0

誰創建了這個JSON數據?它受你控制嗎? – Squonk 2012-07-16 15:53:30

+0

沒有它從一個API,我們不能改變它..... – 2012-07-16 16:01:05

回答

0

一個方法是通過

JSONObject jobj = new JSONObject(content); // the content you have above 
JSONObject data = jobj.getJSONObject("data"); 
JSONObject aboutUs = data.getJSONObject("about us"); 
String desc = aboutUs.getString("description:); 

不知道這是否可以幫助:)如果有這種情況說明是空白使用

aboutUs.optString("description"); 
+0

他說沒有「關於我們」或任何其他標籤的「熱碼」。 – azgolfer 2012-07-16 16:33:57

+0

但我不應該直接在代碼中使用這個「關於我們」,因爲這可能會在未來發生變化...... – 2012-07-16 16:56:39

+0

您可以使用jobj.keys,您將獲得該對象的字符串名稱的迭代器。然後您可以構建一個遞歸方法遍歷JSON對象。不知道是否給你一個提示你的解決方案... – Proxy32 2012-07-19 19:41:43