I have a problem displaying the results of an sql query into a ListView
via SimpleCursorAdapter
. This is my query:
String sql = "" +
"SELECT (Clients.firstname || \" \" || Clients.surname) AS client_name, " +
"Visits._id, " +
"Status.status, " +
"strftime('%H:%M',time(sql_start_date,'unixepoch')) as start_time, " +
"strftime('%H:%M',time(sql_end_date,'unixepoch')) as end_time " +
"FROM " +
"Visits,Clients,Status " +
"WHERE " +
"Visits.status = Status.remote_id " +
"AND " +
"Visits.client_id = Clients.remote_id " +
"AND " +
"Visits.sql_start_date > "+checkpoint+" " +
"AND " +
"Visits.sql_end_date < "+endpoint;
when I execute this query I get a typical result set like so:
client_name |Visit._id|Status.status |start_time |end_time
__________________________________________________________
Kevin Bradshaw|187 |Pending |13:00 |14:00
Peter Flynn |193 |Pending |15:00 |16:30
I want to output this cursor to a listview. The problem I run into is that i can output client name and status no problems, but the start_time and end_time fields remain blank.
my cursor adapter code is this:
Cursor cur = HomeScreen.this.application.getVisitsHelper().fetchVisits();
startManagingCursor(cur);
// the desired columns to be bound
String[] columns = new String[] {VisitsAdapter.KEY_CLIENT_FULL_NAME, VisitsAdapter.KEY_STATUS,VisitsAdapter.KEY_CLIENT_START_TIME, VisitsAdapter.KEY_CLIENT_END_TIME};
// the XML defined views which the data will be bound to
int[] to = new int[] { R.id.name_entry,R.id.number_entry,R.id.start_time_display,R.id.end_time_display };
// create the adapter using the cursor pointing to the desired data as well as the layout information
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(HomeScreen.this, R.layout.list_element, cur, columns, to);
// set this adapter as ListActivity's adapter
HomeScreen.this.setListAdapter(mAdapter);
And finally my xml layout (list_element.xml) is as follows:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android_id="@+id/start_time_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dip"
android:textColor="#333333"
android:layout_marginLeft="14px"
></TextView>
<TextView
android_id="@+id/end_time_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dip"
android:textColor="#333333"
android:layout_toRightOf="@+id/start_time_display"
android:layout_marginLeft="64px"></TextView>
<TextView
android:id="@+id/name_entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dip"
android:textColor="#333333"
android:layout_marginLeft="94px"
android:layout_toRightOf="@+id/end_time_display"/>
<TextView
android:id="@+id/number_entry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dip"
android:textColor="#666666"
android:layout_marginLeft="14px"
android:layout_below="@+id/name_entry"
/>
</RelativeLayout>
So my question is, how come some of the code (i.e. status and client name) is getting output while my time fields (start_time, end_time) are not?
Is it because simple cursor adapters can only deal with ints and strings and my time variables originate from sql timestamps in the database?
Sorry guys, dont waste your time on this.
the problem was a typo.. I referred to android_id in my xml file when it should have been android:id
thanks anyway
Kev