【问题标题】:Android SimpleCursorAdapter / ListView issueAndroid SimpleCursorAdapter / ListView 问题
【发布时间】:2010-08-11 09:49:08
【问题描述】:

我在通过SimpleCursorAdapter 将 sql 查询的结果显示到ListView 时遇到问题。这是我的查询:

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

我想将此光标输出到列表视图。 我遇到的问题是我可以输出客户端名称和状态没有问题,但 start_time 和 end_time 字段保持空白。

我的光标适配器代码是这样的:

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_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>

所以我的问题是,为什么某些代码(即状态和客户端名称)正在输出,而我的时间字段(开始时间、结束时间)却没有?

是不是因为简单的游标适配器只能处理整数和字符串,而我的时间变量来自数据库中的 sql 时间戳?

【问题讨论】:

    标签: android sqlite listview cursor


    【解决方案1】:

    对不起各位,不要在这上面浪费时间。

    问题是一个错字。我在我的 xml 文件中引用了 android_id,而它应该是 android:id

    还是谢谢

    凯夫

    【讨论】:

    • @josh,你不能直接接受自己的答案,当我早些时候尝试这样做时,它告诉我必须等待 22 小时才能接受自己的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多