2013-02-11 7 views
1

Ребят я пытаюсь разобрать этот JSON нижеСинтаксический комплекс JSON в Android

{"response": 
{"message": "Success", 
"code": 2002, 
"payload": 
    {"article": [ 
        {"timestamp_epoch": 1359967680, 
        "search_score": 10.0, 
        "headline": "When Sachin felt like bunking cricket practice", 
        "timestamp": "2013-02-04 08:48:00", 
        "related_article_count": 0, 
        "excerpt": "...their campaign 'Support my School' by NDTV in Mumbai on Sunday. Sachin Tendulkar and Aishwarya Rai Bacchan during an event 3/5 Sachin Tendulkar and Aishwarya Rai Bacchan during an event India's Sachin Tendulkar with actress Aishwarya Rai Bachchan during the...", 
        "source": {"name": "OneIndia", 
           "url": "http://www.oneindia.in/", 
           "daylife_url": "http://www.daylife.com/source/OneIndia", 
           "rank": 3, 
           "favicon_url": "http://favicon.daylife.com/imageserve/0e0Jd1Xczb7oW/favicon.png", 
           "source_id": "0e0Jd1Xczb7oW", 
           "type": "MAINSTREAM"}, 
        "url": "http://feedproxy.google.com/~r/oneindia-cricket/~3/z1pS6w289SU/when-sachintendulkar-felt-like-bunking-cricket-practice-066016.html", 
        "daylife_url": "http://www.daylife.com/article/07nC5eTbBE0YA", 

        "article_id": "07nC5eTbBE0YA"}, 


        {"timestamp_epoch": 1360361400, 
        "search_score": 8.69279902947, 
        "headline": "Sachin equals Sunny", 
          . 
          . 
          . 
          . 
          . 

Я просто заинтересован в заголовке и URL значения. Мне легко получить эти значения с помощью этого java-кода ниже.

JSONObject root = new JSONObject(result); 
      JSONObject response = root.getJSONObject("response"); 

      String attributeId = response.getString("message"); 
      System.out.println(attributeId); 

      JSONObject payload = response.getJSONObject("payload"); 
      JSONArray article = payload.getJSONArray("article"); 



      for (int i = 0; i < article.length(); i++) { 
       JSONObject c = article.getJSONObject(i); 
       String headline = c.getString("headline"); 
       String url = c.getString("url"); 
       System.out.println(url); 
       System.out.println(headline); 
       strings.add(c.getString("headline").toString()); 
      } 
      arrayAdapter = new ArrayAdapter<String>(MainActivity.this, 
        android.R.layout.simple_list_item_1, strings); 

      resultList.setAdapter(arrayAdapter); 
      arrayAdapter.notifyDataSetChanged(); 

Здесь я устанавливаю заголовок в ListView (эта часть работает отлично). И мой вопрос вот как это сделать: когда я нажму на любой список, он должен пройти соответствующий urlАктивность WebView (на самом деле я реализую это в другом классе). Итак, как добиться этого, как сохранить соответствующий URL-адрес с заголовком? пожалуйста, кто-то мне помочь ..

Заранее спасибо ..

ответ

1

Вы можете создать класс с именем статьи, имеющий два свойства (строка заголовок и строка URL). Затем создайте геттер/сеттер для обоих свойств. Теперь создать ArrayList типа статьи как ..

ArrayList<Article> articleList = new ArrayList<Article>(); 

Затем при разборе данных делать, как ..

Article article = new article(); 

и поместить значение в объект как ..

article.setHeading(c.getString("headline")); 
article.setUrl(c.getString("url")); 

и добавить объект в arraylist like ..

articleList.add(article); 

в конце концов, когда вы нажимаете любой элемент списка, чтобы добавить его в свой основной вид, добавьте OnItemClickListener. он даст вам позицию элемента, нажата. то вы можете получить соответствующий URL объекта из arcleList как ..

articleList.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
       long id) { 
      String url = articleList.get(position).getUrl(); 
      Intent i = new Intent(MainActivity.this, WebViewActivity.class); 
      i.putExtra("url", url); 
      startActivity(i); 
     } 
    }); 

Теперь поместите этот адрес в намерениях в основной деятельности и получить его в webActivity и использовать его в WebView, наконец ...

+0

Эй действительно хорошее объяснение , Спасибо большое. Но все еще возникают проблемы с arrayAdapter для заголовка (но часть webView работает нормально) – 2013-02-12 03:46:34

+0

Проблема ArrayAdapter может быть решена двумя способами. Сначала просто попросите еще один массивList сказать (строки) строки типа, как вы использовали в своем коде, и извлечь все заголовки из статьиList и помещается в ваши строки, например .. for (int i = 0; i

0

Создать собственный адаптер, который хранит URL, заголовок в виде текста модель и отображает заголовок в OnView и в onitemclicklistener доступа модели списке следует OBJ внутри адаптера и открытая WebView с этим URL ... как этот http://www.ezzylearning.com/tutorial.aspx?tid=1763429

и itemclick слушатель

listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
    Model item = (Model)contests_listView.getItemAtPosition(position); 
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(item.getUrl())); 
    startActivity(browserIntent); // show url in browser or pass it to your webview activity 

    } 
}); 
Смежные вопросы