Android: комната дао возвращается ноль - PullRequest
0 голосов
/ 13 июня 2019

У меня есть простой список ReViewlerView CardViews, который работает нормально.Я пытаюсь отфильтровать список, когда пользователь выбирает определенный «тип» CardView.Приложение падает с ошибкой Logcat, говоря, что ArrayList "FilterList0" является нулевым объектом.Однако из полного представления списка RecyclerView и данных базы данных я знаю, что существует ряд типов карт CardView, которые должны отображаться в отфильтрованном представлении.Я подозреваю, что AsyncTask () в репозитории не возвращает отфильтрованный список.Что мне здесь не хватает?

public class MainActivity extends AppCompatActivity

    private List<Card> filteredModelList0 = null;
    public void onClickFilterList(View view) {

        final AlertDialog.Builder alertDialogFilter = new AlertDialog.Builder(MainActivity.this);
        ...
        dialogFilter.show();

        TextView allDos = dialogLayoutFilter.findViewById(id.AllDos);
        allDos.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                filteredModelList0 = mViewModel.filterListCardTypeDo();
                adapter.setFilter(filteredModelList0);                
                dialogFilter.dismiss(); 
    }

MainViewModel.java
    ...
    List<Card> filterListCardTypeDo() {
        return repository.filterDo();
    } 

QuickcardRepository
    ...
    public List<Card> filterDo() {

        new FilterDoAsyncTask(quickcardDao).execute();
        return null; *** is this the problem?
    } 

    private static class FilterDoAsyncTask extends AsyncTask<Void, Void, List<Card>> {

        private QuickcardDao asyncTaskDao2;
        FilterDoAsyncTask(QuickcardDao dao) {
        asyncTaskDao2 = dao;
    }

    @Override
    protected List<Card> doInBackground(Void... voids) {
        return asyncTaskDao2.filterListCardTypeDo();
    }


CardDao
    ...
    @Query("SELECT * FROM cards WHERE cardType IN ('Do')")
    List<Card> filterListCardTypeDo();     

Adapter
    ...
    public void setFilter(List<Card> listItems) {
        cardList = new ArrayList<>();
        cardList.addAll(listItems);
        notifyDataSetChanged();
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...