java - Android 中 ListView 的自定义光标适配器的问题

标签 java android listview cursor

我有一个应用程序将查询数据库并尝试以列表格式输出结果。

我的第一次尝试是使用 simpleCursorAdapter,它对于名称和状态等字符串输出效果很好,但不会显示光标处的时间字段。我的数据库中的时间字段是时间戳类型。时间字段的查询是

"strftime('%H:%M',time(sql_start_date,'unixepoch')) as start_time, " +

经过一点研究,结果发现 SimpleCursorAdapters 仅适用于字符串。我发现这有点令人困惑,因为我认为字段 start_time 是字符串的格式(毕竟我可以通过说以下内容在日志窗口中查看结果:

Log.i(TAG,start_time);

所以我的下一个尝试是使用我自己的自定义 CursorAdapter:

private class MyVisitsAdapter extends CursorAdapter{
     private Cursor mCursor;
     private Context mContext;
     private final LayoutInflater mInflater;

     public MyVisitsAdapter(Context context, Cursor cursor) {
       super(context, cursor, true);
       mInflater = LayoutInflater.from(context);
       mContext = context;
     }

     @Override
     public void bindView(View view, Context context, Cursor cursor) {
      String st = cursor.getString(cursor.getColumnIndex(VisitsAdapter.KEY_CLIENT_START_TIME));
      Log.i("Check Cursor result",st);
      TextView t = (TextView) view.findViewById(R.id.start_time_display);

      t.setText(st);


       TextView t1 = (TextView) view.findViewById(R.id.end_time_display);
       t.setText(cursor.getString(cursor.getColumnIndex(VisitsAdapter.KEY_CLIENT_END_TIME)));

       t = (TextView) view.findViewById(R.id.name_entry);
       t.setText(cursor.getString(cursor.getColumnIndex(VisitsAdapter.KEY_CLIENT_FULL_NAME)));
     }

     @Override
     public View newView(Context context, Cursor cursor, ViewGroup parent) {
       final View view = mInflater.inflate(R.layout.list_element, parent, false);
       return view;
     }

   }

代码失败:

t.setText(st);

有空指针异常。适配器未找到“start_time_display” TextView 。

包含字段(list_element.xml)的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>

正如您所看到的,其中显然包含“start_time_display” TextView 。

希望我错过了一些简单的东西,有更多经验的人(我对 Android 很陌生,我的 Java 很生锈)

先谢谢了

凯文

最佳答案

对不起,伙计们,不要在这上面浪费时间。

问题是一个拼写错误..我在 xml 文件中引用了 android_id,而它本应是 android:id

还是谢谢

凯文

关于java - Android 中 ListView 的自定义光标适配器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448533/

相关文章:

android - 重用 ListView 行中的 View - "The specified child already has a parent"异常

java - 在 Android 中以编程方式创建具有自定义列表项的 ListView - 无 xml 列表项布局

c# - 使用动态绑定(bind) asp.net 将项目模板添加到 ListView

java - 根据属性对不同列表中的对象进行分类

java - 在 java 中对巨大的 file.txt 的行进行排序

android - 来自 URL 的 ImageView

android - JSON 解析成 ListView

java - Hibernate `Session` 是否有一个名为 `find()` 的方法,它接受 HQL 字符串?

java - 为什么我的缓冲 `String` 与 `RegEx` 模式不匹配?

javascript - ListView 与 NumericTextBox 数据初始化