1

Android用の辞書アプリケーションを構築しています。SQLite データベースを検索できる SEARCH ボタンを作成し、そのデータを ListView に表示したいと考えています。

  1. その検索ボタンをデータベースの SELECT ステートメントにリンクするには、どのようにコーディングすればよいでしょうか?
  2. SELECTステートメントの結果をListViewに表示する方法は?

前もって感謝します。

4

2 に答える 2

0

そのためには、検索バーの内容に応じて次のようなクエリを作成する必要があります。

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

于 2012-05-15T19:48:12.830 に答える
0

対処する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) {

        }
    }
}
于 2012-05-15T20:23:16.303 に答える