[英]Parsing complex JSON in Android
伙计们,我正在尝试解析以下JSON
{"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",
.
.
.
.
.
我只是对标题和网址值感兴趣。 我可以通过下面的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? 请有人帮我..
提前致谢..
您可以创建一个名为Article的类,该类具有两个属性(字符串标题和字符串url)。 然后为这两个属性生成getter / setter。 现在创建一个Article类型的ArrayList。
ArrayList<Article> articleList = new ArrayList<Article>();
然后在解析数据时按以下方式操作:
Article article = new article();
并将价值放入对象之类的..
article.setHeading(c.getString("headline"));
article.setUrl(c.getString("url"));
并将对象添加到arraylist之类的..
articleList.add(article);
毕竟,当单击任何列表项时,要使它变得吓人,请在您的主要活动中添加OnItemClickListener。 它将为您提供被点击项目的位置。 那么您可以从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中使用它...
创建一个自定义的Adapter,将URL,Headline作为模型存储并在onView中显示标题文本,并在listview的onitemclicklistener中访问适配器中的模型obj,并使用该URL打开Webview ...,例如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
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.