我正在为android构建一个字典应用程序。 我想创建一个SEARCH按钮,可以搜索SQLite数据库,然后将数据显示到ListView。
先谢谢。
答案 0 :(得分: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
,但这些取决于您的目标。
This是android的数据库教程。
答案 1 :(得分:0)
要处理ListView
,您可以使用我的代码
它做同样的事情,即从文本字段获取输入,在db中搜索它并在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) {
}
}
}