Here is my problem:
I have a Java String returned from my Web service in the below form:
21,6.417,0.3055714,27,0.7778,0.04761905
Now I have splitted this string into separate Strings by using split function by comma delimiter.
dataList = Arrays.asList(data.split(","));
I need to loop through this list and assign these Values into separate Strings like below:
int playsCount = Integer.parseInt(dataList.get(0)); float sumTimeViewed = Float.valueOf(dataList.get(1)); float avgTimeViewed = Float.valueOf(dataList.get(2)); int loadsCount = Integer.parseInt(dataList.get(3)); float loadPlayRatio = Float.valueOf(dataList.get(4)); float avgViewDropOff = Float.valueOf(dataList.get(5));
Now While getting the values and assigning to the Individual int and floats, getting ArrayIndexOutofBoundsException. This is because some times the list is returning the size as 4 than 6. Here is the code:
reportDataList = getReportData(entry.id); //System.out.println("reportDataList.size()"+reportDataList.size()); if(reportDataList.size() >= 1) { for(int i=0;i<reportDataList.size();i++) { if(!reportDataList.get(0).equals("")) { playsCount = Integer.parseInt(reportDataList.get(0)); } if(!reportDataList.get(1).equals("")) { sumTimeViewed = Float.valueOf(reportDataList.get(1)); } if(!reportDataList.get(2).equals("")) { avgTimeViewed = Float.valueOf(reportDataList.get(2)); } if(!reportDataList.get(3).equals("")) { loadsCount = Integer.parseInt(reportDataList.get(3)); } if(!reportDataList.get(4).equals("")) { loadPlayRatio =Float.valueOf(reportDataList.get(4)); } if(!reportDataList.get(5).equals("")) { avgViewDropOff = Float.valueOf(reportDataList.get(5)); } } }
And here is the getReportData method:
private List<String> getReportData(String id) throws KalturaApiException {
List<String> headerList = null;
List<String> dataList = new ArrayList<String>();
ReportService reportService = client.getReportService();
ReportType reportType = ReportType.TOP_CONTENT;
ReportInputFilter reportInputFilter = new ReportInputFilter();
reportInputFilter.fromDate = 1390156200;
reportInputFilter.toDate = 1453660200;
ReportTotal reportTotal = reportService.getTotal(reportType, reportInputFilter, id);
String data = reportTotal.data;
if(data != null) {
dataList = Arrays.asList(data.split(","));
}
if(dataList.size() >= 1) {
System.out.println("dataList.size() ------->"+dataList.size());
}
return dataList;
}
How to resolve this problem for any List size acceptable?
Thanks in Advance Raji