1

データベースsql..の要素を表示するリストビューを作成するのに助けが必要です。最初に、id:Text1,Text2 and Text3 を持つ3つのフィールドTextViewと私のアクティビティの1つのリストビューを持つ小さなxmlレイアウトを作成しました。インターフェイスで列をグループ化した後

public interface TableRegistry extends BaseColumns{

     String TABLE_NAME = "Registry";

     String TYPE = "Type";
     String DATE = "Date";
     String STATUS = "Status";
     String NUMBER = "Number";
     String MESSAGE = "Message";
     String OTHER = "Other";

     String[] COLUMNS = new String[]
                { _ID, TYPE, DATE, STATUS, NUMBER, MESSAGE, OTHER };
            }

データベースクラスを作成した後。

public class APdatabaseClass extends  SQLiteOpenHelper {

    private static final String DATABASE_NAME = "APdatabase";
    private static final int DATABASE_VERSION = 1;

    public APdatabaseClass(Context context) {
        super(context, DATABASE_NAME , null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String sql = "CREATE TABLE {0} ({1} INTEGER PRIMARY KEY AUTOINCREMENT," + 
                " {2} TEXT NOT NULL,{3} TEXT NOT NULL,{4} TEXT NOT NULL,{5} TEXT NOT NULL,{6} TEXT NOT NULL, {7} TEXT NOT NULL);";
            db.execSQL(MessageFormat.format(sql, TableRegistry.TABLE_NAME, TableRegistry._ID,
                TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS, TableRegistry.NUMBER, TableRegistry.MESSAGE, TableRegistry.OTHER));

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TableRegistry.TABLE_NAME);

        // Create tables again
        onCreate(db);       
    }

SimpleCursorAdapterなどを使用して、アクティビティのリストビューにデータベースを接続するにはどうすればよいですか?3つのTextViewフィールドに次のものを入力する必要があります。

TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS.

前もって感謝します!

4

2 に答える 2

2

少し余分な仕事をするつもりのようです。これが私が通常行う方法です:

データベース ヘルパーで最初に create メソッドを実行して、必要な情報を取得します。

public Cursor fetchListData() {
    return mDb.query(TableRegistry.TABLE_NAME, new String[] { TableRegistry._ID,
        TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS }, null,null, 
        null, null, null);
}

次に、リストを作成するクラスで次のようにします。

APdatabaseClass mDbHelper = new APdatabaseClass(getActivity());
mDbHelper.open();

Cursor c = fetchListData();
getActivity().startManagingCursor(c);

String[] from = new String[] { TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS };
int[] to = new int[] {  R.id.Text1, R.id.Text2, R.id.Text3  };
SimpleCursorAdapter data = new SimpleCursorAdapter(getActivity(), R.layout.yourlistlayout, c, from, to);
setListAdapter(data);

これは、ListFragment または ListActivity を使用していることを前提としていることに注意してください。そうでない場合は、アダプターの設定方法が少し異なります。

お役に立てれば!

于 2012-04-12T04:02:55.527 に答える
0

はい、raqQuery()メソッドを使用してクエリを実行できるようになりました。結果として Cursor が得られます。

ここで、カーソルを反復処理してデータをフェッチする必要があります。

例えば、

Cursor cur = db.raqQuery("Select * from myTable",null);
if (cur != null) {
    if (cur.moveToFirst()) {
        do {
            cur.getString(cur.getColumnIndex("Name"))); // "Name" is the field name in table
        } while (cur.moveToNext());
    }
}
于 2012-04-12T03:02:12.300 に答える