将sql查询的结果显示到
ListView
通过
SimpleCursorAdapter
. 我的问题是:
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;
当我执行这个查询时,我得到一个典型的结果集,如下所示:
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
我遇到的问题是,我可以输出客户端名称和状态“没有问题”,但“开始时间”和“结束时间”字段仍然为空。
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);
最后,我的xml布局(list\u element.xml)如下所示:
<?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>