I found the answer thanks to @Martin Foot
the for loop actually gets individual result alone not all results. so when getting the callLogCusor.getString(i), I am getting the value of a specific column, not all the row.
the code now looks like
for (int i=0; i<callLogCursor.getColumnCount(); i++) {
if(i == 0){
String type = getLogType(callLogCursor.getString(i));
callLogs += type;
} else if (i == 1){
callLogs += "-" + CommonUtils.formatDate(callLogCursor.getLong(i));
} else if (i == 2){
callLogs += "-" + callLogCursor.getString(i);
} else if (i == 3){
callLogs += "-" + CommonUtils.formatDuration(callLogCursor.getInt(i)) + "\n";
}
}