android实现备忘录的查询功能,代码
时间: 2024-02-06 16:12:38 浏览: 36
以下是一个简单的 Android 备忘录应用程序中查询备忘录的功能代码示例:
1. 首先,你需要定义一个用于查询备忘录的方法:
```java
public List<Note> searchNotes(String query) {
List<Note> searchResults = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
String[] projection = {
NoteContract.NoteEntry._ID,
NoteContract.NoteEntry.COLUMN_NAME_TITLE,
NoteContract.NoteEntry.COLUMN_NAME_CONTENT,
NoteContract.NoteEntry.COLUMN_NAME_DATE
};
String selection = NoteContract.NoteEntry.COLUMN_NAME_TITLE + " LIKE ? OR "
+ NoteContract.NoteEntry.COLUMN_NAME_CONTENT + " LIKE ?";
String[] selectionArgs = {"%" + query + "%", "%" + query + "%"};
Cursor cursor = db.query(
NoteContract.NoteEntry.TABLE_NAME,
projection,
selection,
selectionArgs,
null,
null,
null
);
while (cursor.moveToNext()) {
long itemId = cursor.getLong(
cursor.getColumnIndexOrThrow(NoteContract.NoteEntry._ID));
String title = cursor.getString(
cursor.getColumnIndexOrThrow(NoteContract.NoteEntry.COLUMN_NAME_TITLE));
String content = cursor.getString(
cursor.getColumnIndexOrThrow(NoteContract.NoteEntry.COLUMN_NAME_CONTENT));
String dateStr = cursor.getString(
cursor.getColumnIndexOrThrow(NoteContract.NoteEntry.COLUMN_NAME_DATE));
Date date = new Date(Long.parseLong(dateStr));
Note note = new Note(itemId, title, content, date);
searchResults.add(note);
}
cursor.close();
return searchResults;
}
```
该方法将查询备忘录数据库中与查询字符串匹配的备忘录,并将结果作为 Note 对象列表返回。该方法使用 SQLite 数据库提供的 `query()` 方法执行查询操作,并使用 `selection` 和 `selectionArgs` 参数指定查询条件。
2. 在你的备忘录应用程序中,你需要添加一个搜索框或搜索按钮,以便用户输入查询字符串并执行查询操作。例如,你可以在主活动的菜单栏中添加一个搜索按钮,并在用户点击搜索按钮时打开一个新的活动来显示搜索结果。
```java
public class MainActivity extends AppCompatActivity implements NoteAdapter.OnNoteClickListener {
private static final int ADD_NOTE_REQUEST = 1;
private static final int EDIT_NOTE_REQUEST = 2;
private RecyclerView recyclerView;
private NoteAdapter adapter;
private List<Note> notes;
private NotesDbHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new NotesDbHelper(this);
notes = dbHelper.getAllNotes();
recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new NoteAdapter(notes, this);
recyclerView.setAdapter(adapter);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivityForResult(new Intent(MainActivity.this, AddEditNoteActivity.class), ADD_NOTE_REQUEST);
}
});
// 添加搜索按钮
SearchView searchView = findViewById(R.id.search_view);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
searchNotes(query);
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
}
private void searchNotes(String query) {
List<Note> searchResults = dbHelper.searchNotes(query);
adapter.setNotes(searchResults);
}
// ...
}
```
在上面的代码中,我们添加了一个 `SearchView` 元素,并在用户提交搜索时调用 `searchNotes()` 方法执行查询操作。该方法将搜索结果传递给 `adapter`,并更新 `recyclerView` 中的备忘录列表。
3. 最后,你需要更新备忘录适配器以显示查询结果。你可以添加一个 `setNotes()` 方法,该方法将 Note 对象列表传递给适配器,并使用 `notifyDataSetChanged()` 方法通知适配器更新列表。
```java
public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.NoteViewHolder> {
private List<Note> notes;
private OnNoteClickListener listener;
public NoteAdapter(List<Note> notes, OnNoteClickListener listener) {
this.notes = notes;
this.listener = listener;
}
public void setNotes(List<Note> notes) {
this.notes = notes;
notifyDataSetChanged();
}
// ...
}
```
现在,你已经完成了备忘录应用程序中查询备忘录的功能。