在DAO中添加一个方法来获取一个单词
@Query("SELECT * from word_table LIMIT 1")
Word[] getAnyWord();
更新初始化方法检查数据是否存在
@Override
protected Void doInBackground(final Void... params) {
// If we have no words, then create the initial list of words
if (mDao.getAnyWord().length < 1) {
for (int i = 0; i <= words.length - 1; i++) {
Word word = new Word(words[i]);
mDao.insert(word);
}
}
return null;
}
在WordDao接口中添加deleteAll( )并注解
@Query("DELETE FROM word_table")
void deleteAll();
将deleteAll( ) 添加到 WordRepository 类
private static class deleteAllWordsAsyncTask extends AsyncTask<Void, Void, Void> {
private WordDao mAsyncTaskDao;
deleteAllWordsAsyncTask(WordDao dao) {
mAsyncTaskDao = dao;
}
@Override
protected Void doInBackground(Void... voids) {
mAsyncTaskDao.deleteAll();
return null;
}
}
将deleteAll( ) 添加到 WordViewModel 类
添加清除所有数据菜单选项
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.clear_data) {
// Add a toast just for confirmation
Toast.makeText(this, "Clearing the data...",
Toast.LENGTH_SHORT).show();
// Delete the existing data
mWordViewModel.deleteAll();
return true;
}
return super.onOptionsItemSelected(item);
}
将deleteWord( ) 添加到 DAO 并对其进行注释
@Delete
void deleteWord(Word word);
将deleteWord( ) 添加到 WordRepository 类
private static class deleteWordAsyncTask extends AsyncTask<Word, Void, Void> {
private WordDao mAsyncTaskDao;
deleteWordAsyncTask(WordDao dao) {
mAsyncTaskDao = dao;
}
@Override
protected Void doInBackground(final Word... params) {
mAsyncTaskDao.deleteWord(params[0]);
return null;
}
}
将deleteWord( ) 添加到 WordViewModel 类
public void deleteWord(Word word) {mRepository.deleteWord(word);}
项目地址:
https://github.com/google-developer-training/android-fundamentals-apps-v2/tree/master/RoomWordsWithDelete
编写数据库代码
@insert、@delete、@update、@query。例如:
@Delete
void deleteWord(Word word);
@Update
void update(Word... word);
@query注释并提供操作的 SQL。例如:
@Query("SELECT * from word_table ORDER BY word ASC")
LiveData> getAllWords();
@Query("DELETE FROM word_table")
void deleteAll();
ItemTouchHelper
RecyclerView,您可以使用ItemTouchHelper该类。onMove()和onSwipe().RecylerView. 该方法获取一个位置并返回相关项目。调用里面的方法onMove()or onSwipe()。