我不熟悉数据库我有一个名为words_library.db
的数据库文件,其中包含一个名为dictionary_lib
的表,其中有两列,一列是English_lib
,第二列是{{1}我想要实现的是:
当用户在搜索框中输入一个单词并验证时会出现一个对话框,显示如下图所示的结果(查看图1),这是我到目前为止的代码:
爪哇
German_lib
期望的结果(图1)
答案 0 :(得分:0)
我有一个名为words_library.db的数据库文件
你不清楚如何拥有该文件,或者正在加载它,但继续前进。
当用户在搜索框中键入单词并验证
时
这是按下按钮吗?我会假设它是。
您似乎遇到的问题是breaking the problem into smaller steps。
你需要
AlertDialog.Builder#setCursor
)理想情况下,每一个都应该写成单独的方法
以下代码未经测试,但我认为应该接近您正在寻找的内容。
// Get your database reference
final DataBaseHelper db = new DataBaseHelper(getContext());
// Setup the search button
findViewById(R.id.start_search).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String searchQuery = searchBox.getText().toString();
Cursor germanWordCursor = getGermanWords(db, searchQuery);
showDialog(String.format("'%s' in German", searchQuery), germanWordCursor);
}
});
// Query the database for the german words from a given english word
private Cursor getGermanWords(DataBaseHelper dbHelper, String englishQuery) {
final SQLiteDatabase db = dbHelper.getReadableDatabase();
return db.query("dictionary_lib",
null,
"English_Lib = ?",
new String[] { englishQuery },
null, null, null);
}
// Display a list dialog from a database cursor
private void showDialog(String title, Cursor cursor) {
final int theme = R.style.AppCompatAlertDialogStyle;
final Drawable blueOutLine = getResources().getDrawable(R.drawable.blue_out_line, theme);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), theme)
.setTitle(title)
.setCursor(cursor, null, "German_lib")
.setNegativeButton("CLOSE", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int id){
Stxt.setBackground(blueOutLine);
}
}).show();
}
注意 setCursor
将需要数据库表中名为_id
的列