У меня есть две таблицы одна категория и другая подкатегория, аннотированные @ForeignKeys и @ Dao
@Query("SELECT * FROM TransSubCategory WHERE
TRANS_CATEGORY_ID LIKE :id ORDER BY transSubCategory ASC ")
LiveData<List<TransSubCategory>> getAlphabetizedTransSubCategoriesById(int id);
Я не знаю, как предоставить / передать идентификатор функции для создания подкатегории в соответствии с идентификатором категории.
это то, что я делаю в хранилище.
public class TransSubCategoryRepository {
private static int id;
private TransSubCategoryDao mTransSubCategoryDao;
private LiveData<List<TransSubCategory>> mAllTransSubCategories;// change here
private LiveData<List<TransSubCategory>> mTransSubCategoriesByCategoryId;
public TransSubCategoryRepository(Application application) {
ExpenseDatabase db = ExpenseDatabase.getDatabase(application);
mTransSubCategoryDao = db.transSubCategoryDao();// update function in database.
mAllTransSubCategories = mTransSubCategoryDao.getAlphabetizedTransSubCategories();// replace the function in Dao
mTransSubCategoriesByCategoryId = mTransSubCategoryDao.getAlphabetizedTransSubCategoriesById(getId());
}
**Trying to provide id but not succeeded **
private int getId(int id){
return id;
}
public LiveData<List<TransSubCategory>>getTransSubCategoriesById(){
getId();
return mTransSubCategoriesByCategoryId;
}
// Room executes all queries on a separate thread.
// Observed LiveData will notify the observer when the data has changed.
public LiveData<List<TransSubCategory>> getAllTransSubCategories() // replace the function in dao.
{
return mAllTransSubCategories;
}
// You must call this on a non-UI thread or your app will crash.
// Like this, Room ensures that you're not doing any long running operations on the main
// thread, blocking the UI.
public void insert (TransSubCategory transSubCategory) {
new insertAsyncTask(mTransSubCategoryDao).execute(transSubCategory);
}
private static class insertAsyncTask extends AsyncTask<TransSubCategory, Void, Void> {
private TransSubCategoryDao mTransSubCategoryAsyncTaskDao;
insertAsyncTask(TransSubCategoryDao dao) {
mTransSubCategoryAsyncTaskDao = dao;
}
@Override
protected Void doInBackground(final TransSubCategory... params) {
mTransSubCategoryAsyncTaskDao.insert(params[0]);
return null;
}
}
}
Я реализовал представление Model Architecture.