除了listitems之外,Android从json获得额外的价值

时间:2014-10-23 14:09:14

标签: android json

我的申请是新闻申请。我有一个来自json-php-mysql的listview填充数据。 我想获得其他新闻类别的新记录数量。例如,在列出经济新闻的同时,我希望在体育图标的页脚上显示新体育新闻的数量。 这是我的代码: PHP代码

while($b=mysql_fetch_assoc($myquery)){
$news[] = array("header" => $b['header'], "newsid" => $b['newsid']);
}
echo json_encode($news);

我的java代码

 class Loadnews extends AsyncTask<String, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();

    }

    @Override
    protected String doInBackground(String... args) {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();

        params.add(new BasicNameValuePair("category",activecat));
        // getting JSON string from URL
        String json = jsonParser.makeHttpRequest(URL_CATEGORY, "GET",
                params);
        return json;
    }
    @Override
    protected void onPostExecute(String json) {
        try {
            news = new JSONArray(json);
            if (news != null) {
                for (int i = 0; i < news.length(); i++) {
                    JSONObject c = news.getJSONObject(i);
                    String header= c.getString(TAG_HEADER);
                     String newsid= c.getString(TAG_NEWSID);
                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();
                    // adding each child node to HashMap key => value
                    map.put(TAG_HEADER, HEADER);
                     map.put(TAG_NEWSID, newsid);
                    // adding HashList to ArrayList
                    newslist.add(map);
                }
                mAdapter = new CategoryListAdapter(mainactivity.this,newslist);
                lv.setAdapter(mAdapter);
            } else {
                Log.d("NEWS: ", "null");
            }
} catch (JSONException e) {
            e.printStackTrace();
        }}}

我不想再运行另一个asynctask来获取新消息。有没有办法计算这个功能? P.S:变量名可能不正确,因为我试图简化代码。

1 个答案:

答案 0 :(得分:0)

为什么不创建一个包含标题和新闻数量的Map。 地图匹配标题和具有相同标题的新闻数量。 例如,:

HashMap<String,Integer> myMapCounter = new HashMap<String,Integer>();

    for (Map.Entry<String, String> entry : myMapCounter.entrySet()) {
      if(entry.getKey().equals(header))
      {
         entry.setValue(entry.getValue()+1)
      }
   }

我真的不明白这个问题。所以我希望你能得到它。