如何从表中获取_id字段并将其放入ListView

时间:2011-12-16 20:17:42

标签: android android-listview android-adapter

我在这里感到有些困惑。

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.bugs_list_item, itemCursor, 
            new String[] {db.KEY_ROWID, db.BUGS_DATE, db.BUGS_DESCRIPTION}, 
            new int[] {R.id.bug_id, R.id.bug_date, R.id.bug_description});

这基本上显示了一个带有日期和描述但没有id的ListView(我只是得到空格代替id)。 _id字段是主键,它是一个整数。

了解它在img上的外观

enter image description here

XML文件:

<?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:stretchColumns="1" 
    >
        <TableRow 
        android:id="@+id/tableRow1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
            <TextView             
            android:id="@+id/bug_id" 
            android:layout_width="5dip" 
            android:layout_height="wrap_content"
            android:padding="3dip"                      
            >
            </TextView>
            <TextView            
            android:id="@+id/bug_date" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:padding="3dip"
            android:gravity="right"
            >
            </TextView>
            <TextView            
            android:id="@+id/bug_description" 
            android:layout_width="180dip" 
            android:layout_height="wrap_content"
            android:padding="3dip"
            android:gravity="right"
            >
            </TextView>
        </TableRow>
    </TableLayout>

创建表查询:

BUGS_CREATE = "CREATE TABLE bugs (_id INTEGER NOT NULL PRIMARY KEY, date DATE DEFAULT (DATETIME('NOW')) NOT NULL, description TEXT) ";

3 个答案:

答案 0 :(得分:0)

非常重要的是,您的“id-field”的名称为“_id”,否则可能无效。

答案 1 :(得分:0)

列表视图行的XML是什么样的?你有没有正确设置ID?

修改
由于您的XML文件似乎设置正确,我现在相信您的问题是另一回事。可能是没有从数据库中正确存储或检索bug_id字段的数据。

这是来自android docs:
'确保为记录的ID包含一个名为“_id”的整数列(带有常量_ID)。无论您是否拥有在所有记录中也是唯一的其他字段(例如URL),您都应该拥有此字段。如果您使用的是SQLite数据库,则_ID字段应为以下类型:

INTEGER PRIMARY KEY AUTOINCREMENT'

尝试更改您的create table SQL,为您的bug_id字段添加如下别名:

bug_id as _id integer primary key autoincrement,

而不是:

bug_id integer primary key autoincrement,

答案 2 :(得分:0)

发现问题:

    android:layout_width="5dip"             
    android:padding="3dip" 

布局宽度仅为5px,当我用3px填充文本时,它可能会在另一个布局下面消失... geez