0

次のコードが機能しない理由を誰かが見つけてくれることを願っています。データベーステーブルからすべての名前を取得する方法があり、リストを使用してそれらを取得します。これはそれらを取得するための私のコードです

/*fetch all names to spinner*/
public List<String> readAllNames()
{
    List<String> names = new ArrayList<String>();
    String[] allNames = {SQLiteHelper.Names};
    String selection = SQLiteHelper.Names + " LIKE ?";
    String[] selectionArgs = null;
    cursor = database.query(SQLiteHelper.LECTURE_NAME, allNames, selection, selectionArgs, null, null, null);

    cursor.moveToFirst();
    while(!cursor.isAfterLast())
    {
        names.add(cursor.getString(cursor.getColumnIndex(SQLiteHelper.Names)));
        cursor.moveToNext();
    }
    cursor.close();
    return names;
}

これは、メソッドを呼び出してスピナーを埋めるための私のコードです

datasource.openToRead();
    List<String> names = datasource.readAllNames();
    ArrayAdapter<String> spin = new ArrayAdapter<String>(Home.this, android.R.layout.simple_spinner_item, names);
    spin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    ins_jadname.setAdapter(spin);
    datasource.close();

問題はスピナーが空であることです。誰もが私のコードの何が問題なのか知っていますか? シンプルなカーソルアダプターは使いたくありません。もっとシンプルだと思うからです。とにかくありがとう。

4

1 に答える 1

1

データベースからすべての名前を取得する場合はLIKE、メソッドで選択句を使用する必要はありませんreadAllNames()。ターゲットの sqlite テーブルのすべての行から name 列からデータを取得するだけで済みます。コードは次のようになります。

cursor = database.query(SQLiteHelper.LECTURE_NAME, allNames, null, null, null, null, null);
于 2013-04-28T17:33:31.063 に答える