ここで大きな問題が発生しました。すべてのクエリ関数を処理するデータベース ヘルパー クラスを作成します。今、データベースから列のすべての値をロードする関数を作成しようとしていますが、その方法がわかりません。参考までに、データベース テーブル内に 3 つの列を取得しました。これまでの私のコードは次のとおりです。
(更新、機能し、値が得られます)
public List<Content> getSearchKeys() {
List<Content> contentList = new ArrayList<Content>();
// The query
String selectQuery = "SELECT * FROM " + TABLE_SEARCH;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// I use do.. while here and it works now, should I better use for loop?
if (cursor.moveToFirst()) {
do {
Content content = new Content();
content.setID(Integer.parseInt(cursor.getString(0)));
content.setsKeys(cursor.getString(1));
content.setAct(cursor.getString(2));
// Adding content to list
contentList.add(content);
} while (cursor.moveToNext());
}
// return content list
return contentList;
}
問題は、上記の関数の結果を String[] に渡す方法ですか? 私のアクティビティでは、次のように使用しようとしましたが、機能しません:
(更新しました)
...
setContentView(R.layout.page_search);
DatabaseHandler db = new DatabaseHandler(this);
List<Content> contents = db.getAllContacts();
final String[] searchQ = new String[contents.size()];
int i =0;
for (Content cn : contents) {
searchQ[i] = cn.getsKeys().toString();
}
final String[] SearchQueries = searchQ;
上記のコードにコメントを付けて、次のように文字列配列に変更すると、機能します。
static final String[] SearchQueries = new String[] { "iPhone", "Mac", "Apple",};
私の目的は、上記の配列をデータベースから取得した配列に置き換えることです。では、何が問題で、これを処理する正しい方法は何ですか? 助けてくれて本当にありがとうございます。