Генерация списка подкатегорий по категориям Введите базу данных комнаты MVVM - PullRequest
0 голосов
/ 30 июня 2018

У меня есть две таблицы одна категория и другая подкатегория, аннотированные @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.

...