0

私はここで少し混乱しています。

    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});

これは基本的に、日付と説明を含む ListView を表示しますが、ID は表示しません (ID の代わりに空白を取得するだけです)。_id フィールドは主キーで、整数です。

imgでそれがどのように見えるかを見てください

ここに画像の説明を入力

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) ";
4

4 に答える 4

0

「id-field」に「_id」という名前を付けることが非常に重要です。そうしないと、機能しない可能性があります。

于 2011-12-16T20:20:52.147 に答える
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,
于 2011-12-16T20:21:50.197 に答える
0

問題が見つかりました:

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

レイアウトの幅はわずか 5 ピクセルで、テキストを 3 ピクセルでパディングすると、おそらく別のレイアウトの下に消えてしまいました...

于 2011-12-19T15:25:34.660 に答える
0

このコードから ID を取得し、このコードを Database.java ファイルに貼り付けるだけです。

String[] return_result()
{

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(tableName, new String[] { "_id", "date", "description"},null, null, null, null, null);
    String[] result = new String[cursor.getCount()];
    int i = 0;
    if(cursor.moveToFirst())
    {
        do
        {
            result[i]= cursor.getString(cursor.getColumnIndex("_id"));
            i++;
        }while(cursor.moveToNext());
    }
    if (cursor!=null && !cursor.isClosed()) 
    {
        cursor.close();
        db.close();
    }
    return result;
}

メインのJavaファイルでは、次のように使用します-

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.bugs_list_item, itemCursor, 
        new String[] {db.return_result(), db.BUGS_DATE, db.BUGS_DESCRIPTION}, 
        new int[] {R.id.bug_id, R.id.bug_date, R.id.bug_description});
于 2011-12-19T13:41:40.120 に答える