You're resetting the ObjectListView
in each iteration. So, what you believe is the "first" row is actually the last row. The following code will fix your issue.
If ((dsOverdueCalls.Tables.Count > 0) AndAlso (dsOverdueCalls.Tables(0).Rows.Count > 0)) Then
Dim lstCalls = New List(Of [Call_Details])
For x As Integer = 0 To (dsOverdueCalls.Tables(0).Rows.Count - 1)
lstCalls.Add(New [Call_Details]() With {.Id = tempDT.Rows(x)("id").ToString, .Summary = tempDT.Rows(x)("summary").ToString, .First_Name = tempDT.Rows(x)("first_name").ToString, .Due_At = OverdueStr})
Next
lsvOverdueCalls.SetObjects(lstCalls)
End If