Android用の辞書アプリケーションを構築しています。SQLite データベースを検索できる SEARCH ボタンを作成し、そのデータを ListView に表示したいと考えています。
- その検索ボタンをデータベースの SELECT ステートメントにリンクするには、どのようにコーディングすればよいでしょうか?
- SELECTステートメントの結果をListViewに表示する方法は?
前もって感謝します。
Android用の辞書アプリケーションを構築しています。SQLite データベースを検索できる SEARCH ボタンを作成し、そのデータを ListView に表示したいと考えています。
前もって感謝します。
そのためには、検索バーの内容に応じて次のようなクエリを作成する必要があります。
select * from <your_database> where word = "<word typed in the search field>"
つまり、たとえば基本的な文字列を作成し、select * from <your_database> where word = "
[選択] ボタンが押されたときに検索バーの内容と連結する必要があります。
さらに、単語を使用したいlike "#<word typed in the search field>#"
単語を分割し、類似の単語を検出してデータベースで検索します。これは、話している実装、つまり辞書に固有のものです。たとえば、辞書に入力cavalier
すると、辞書の結果にも が含まcavalier hat
れますが、これらは目的によって異なります。
これは android のデータベース チュートリアルです。
対処するListView
ために、私のコードを使用できます。同じことを行います。つまり、テキストフィールドから入力を取得し、データベースで検索して、結果を出力しますListView
EditText userInput = (EditText)findViewById(R.id.myEditText);
SQLiteClass mySQLiteClass = new SQLiteClass(this);
mySQLiteClass.openToWrite();
Cursor cursor = mySQLiteClass.returnResultsFromDb(userInput.getText().toString);
ArrayList<String> result = new ArrayList();
for (cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()) {
result.add(cursor.getString(cursor.getColumnIndex(SQLiteClass.BI_Attr2)));
}
String[] Values = new String[result.size()];
for (int i=0; i<result.size(); i++) {
Values[i] = result.get(i);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, android.R.id.text1, Values);
ListView LV = (ListView)findViewById(R.id.myListView);
LV.setAdapter(adapter);
そして、私のデータベースクラスに従ってください
public class SQLiteClass{
public static final String MYDATABASE_NAME = "DATABASE_Proj";
public static final String MYDATABASE_TABLE = "Basic_Info";
public static final String BI_Attr1 = "ID"; // Primary Key
public static final String BI_Attr2 = "Name";
public static final String BI_Attr3 = "StudentRoll";
public static final String BI_Attr4 = "FromCourse";
public static final String BI_Attr5 = "ToCourse";
public static final String BI_Attr6 = "Time";
public static final String BI_Attr7 = "Status";
public static final String BI_Attr8 = "Comments";
private static final String SCRIPT_CREATE_DATABASE = "create table "
+ MYDATABASE_TABLE +
" (" + BI_Attr1 + " integer primary key autoincrement, " +
BI_Attr2 + " text not null, " +
BI_Attr3 + " text," +
BI_Attr4 + " text," +
BI_Attr5 + " text," +
BI_Attr6 + " text," +
BI_Attr7 + " text," +
BI_Attr8 + " text " +
"); ";
public static final int MYDATABASE_VERSION = 1;
private SQLiteHelper sqLiteHelper;
private SQLiteDatabase sqLiteDatabase;
private Context context;
public SQLiteClass(Context c) {
context = c;
}
public SQLiteClass openToRead() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null,
MYDATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getReadableDatabase();
return this;
}
public SQLiteClass openToWrite() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null,
MYDATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getWritableDatabase();
return this;
}
public void close() {
sqLiteHelper.close();
}
public Cursor returnResultsFromDb(String S) {
String[] columns = new String[] { BI_Attr3 };
Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, null,
null, null, null, null);
return cursor;
}
public class SQLiteHelper extends SQLiteOpenHelper {
public SQLiteHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(SCRIPT_CREATE_DATABASE);
} catch (Exception E) {
Log.v("Failed to create DB", "----");
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}