在安卓中解析列表<列表<String>>?



我正在为Android开发一个使用Google Java客户端库的自定义Adsense报告工具。我已经成功地进行了身份验证,并且可以对服务器进行API调用。但现在,当我收到响应时,我不知道如何解析它并正确地向用户显示结果。

根据javaDocs,AdsenseReportsGenerateRespons.getRows()生成一个List>,但我有点不知道如何正确解析它以获得:

-Today's earnings
-Yesterday's earnings
-Last 7 days
-Last month
-From the beginning of time

这是我的部分代码与问题有关

        Reports.Generate request = adsense.reports().generate(startDate, endDate);    
        request.setMetric(Arrays.asList("PAGE_VIEWS", "AD_REQUESTS", "AD_REQUESTS_COVERAGE", "CLICKS",
                "AD_REQUESTS_CTR", "COST_PER_CLICK", "AD_REQUESTS_RPM", "EARNINGS"));
        request.setDimension(Arrays.asList("DATE", "WEEK", "MONTH"));    
        request.setSort(Arrays.asList("+DATE"));
        AdsenseReportsGenerateResponse response = request.execute();
        //TODO: Here be dragons
        response.getRows();

编辑:这是javaDoc,它提到了getRow()

这个网站上似乎没有人能帮上忙?!

您应该会发现我们的示例代码很有用:http://code.google.com/p/google-api-java-client/wiki/APIs#AdSense_Management_API

也就是说,这是您感兴趣的文件:http://code.google.com/p/google-api-java-client/source/browse/adsense-cmdline-sample/src/main/java/com/google/api/services/samples/adsense/cmdline/GenerateReport.java?repo=samples

下面是打印输出的一段代码。请注意,这是一个命令行应用程序,但应该很容易适应:

if ((response.getRows() != null) && !response.getRows().isEmpty()) {
  // Display headers.
  for (AdsenseReportsGenerateResponseHeaders header : response.getHeaders()) {
    System.out.printf("%25s", header.getName());
  }
  System.out.println();
  // Display results.
  for (List<String> row : response.getRows()) {
    for (String column : row) {
      System.out.printf("%25s", column);
    }
    System.out.println();
    }
  System.out.println();
} else {
  System.out.println("No rows returned.");
}

至于获取不同时间段的数据,您可能应该运行不同的报告,而不是将其全部塞进一个报告中,因为这需要不同的开始日期和结束日期。以下是它的工作原理:

  • 今天的收益:将开始日期和结束日期设置为今天,将维度列表设置为仅DATE
  • 昨天的收益:将开始和结束日期设置为昨天,将维度列表设置为仅date
  • 最后7天:如果需要每天的数据,则将开始日期设置为7天前,将结束日期设置为今天,并将维度列表仅设置为date。如果你想汇总统计数据,你可能需要自己计算,因为WEEK和MONTH指的是日历周和日历月,而不是最后7天
  • 上月:开始日期上月1日,结束日期当月最后一天,维度month
  • 一直以来:您希望如何聚合?每月?然后将开始日期设置为1980-1-1,结束日期设置为今天,维度设置为MONTH

这篇博客文章应该有助于更好地理解报告概念:http://adsenseapi.blogspot.com/2011/11/adsense-management-api-diving-into.html

如果你在其他方面需要帮助,请告诉我!

就我对api的理解而言,它不是List<List>。试试这个:

String[][] array = response.getRows();
for (int i = 0; i < array.getSize(); i++){
    String dimension = array[i][0];
    String metric = array[i][1];
    //Do what you want with them
}

我之所以写这篇文章,是因为据我所知,API说它有一个维度列表,其中一个值用于字符串,一个值为度量。

如果您希望每行上有几个单元格(我认为API不这样做),则需要在内部添加另一个单元格,并获得当前列表的大小,可能使用array[i].getSize() 之类的内容

如果它对你没有帮助,就寄回去。

编辑:我现在明白了。试试这个:

List list = response.getRows();
for (int i = 0; i < list.size(); i++){
List<String> list2 = list.get(i);
for (int j = 0; j < list2.size(); j++){
String value = list2.get(j);
//Do what you want
}
}

相关内容

  • 没有找到相关文章

最新更新