Невозможно связать RecyclerView с помощью EventBus в планшетах Android

Я использую EventBus Green Robot для внутреннего обмена сообщениями о событиях, я хочу отображать данные в своем RecyclerView с помощью EventBus. Проблема заключается в том, что почтовое сообщение EventBus принимается правильно и отображает данные на устройствах Android 5 дюймов, но один и тот же код не работает на планшетах 7 дюймов и 10 дюймов. Он работает на всех устройствах, когда фрагмент загружается в первый раз, но когда я пытаюсь связать данные с помощью EventBus, он не работает.

   StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(colCount, StaggeredGridLayoutManager.VERTICAL);

        recyclerView.setLayoutManager(staggeredGridLayoutManager);

        SpacesItemDecoration decoration = new SpacesItemDecoration(4);
        recyclerView.addItemDecoration(decoration);

        recyclerView.setHasFixedSize(true);
        CategoryAdapter categoryAdapter = new CategoryAdapter(new ArrayList<Category>(), mListener);
        recyclerView.setAdapter(categoryAdapter);

Приведенный выше блок кода находится в моем методе onCreateView.

    @Subscribe(threadMode = ThreadMode.MAIN)
public void onClassificationEvent(final EventMessage event) {
    Log.e("onClassificationEvent", "onClassificationEvent AllFragment :" + event.getEventId());

    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (event.getEventId() == "20") {
                //All
                bindCategories(3);
            } else if (event.getEventId() == "21") {
                //Veg
                bindCategories(1);
            } else if (event.getEventId() == "22") {
                //NonVeg
                bindCategories(2);
            }
        }
    });


}

Приведенный выше код — это мой метод подписки на EventBus.

 private void bindCategories(final int classification) {

    List<Category> categories = new ArrayList<>();
    if (classification == 1) {
        categories = DbAccessHelper.CategoriesHelper.getVegCategories(getActivity());
    } else if (classification == 2) {
        categories = DbAccessHelper.CategoriesHelper.getNonVegCategories(getActivity());
    } else if (classification == 3) {
        categories = DbAccessHelper.CategoriesHelper.getAllCategories(getActivity());
    }
    if (categories != null) {
        if (!categories.isEmpty()) {
            tvError.setVisibility(View.GONE);
            recyclerView.setVisibility(View.VISIBLE);
            CategoryAdapter categoryAdapter = new CategoryAdapter(categories, mListener);
            recyclerView.setAdapter(categoryAdapter);
            categoryAdapter.notifyDataSetChanged();
        } else {
            tvError.setVisibility(View.VISIBLE);
            recyclerView.setVisibility(View.GONE);
            CategoryAdapter categoryAdapter = new CategoryAdapter(new ArrayList<Category>(), mListener);
            recyclerView.setAdapter(categoryAdapter);
        }
    } else {
        tvError.setVisibility(View.VISIBLE);
        recyclerView.setVisibility(View.GONE);
        CategoryAdapter categoryAdapter = new CategoryAdapter(new ArrayList<Category>(), mListener);
        recyclerView.setAdapter(categoryAdapter);
    }


}

Этот метод используется для привязки RecyclerView к данным. Может ли кто-нибудь помочь мне найти проблему?


person Gurupriyan K S    schedule 08.12.2016    source источник
comment
Вы получаете какое-либо исключение?   -  person Devendra Singh    schedule 08.12.2016
comment
никаких исключений, я проверил свои журналы, в моем адаптере вызывается только getItemCount(), onBindViewHolder не вызывается   -  person Gurupriyan K S    schedule 08.12.2016
comment
это как-то связано с Threading? кто-нибудь, пожалуйста, помогите мне   -  person Gurupriyan K S    schedule 08.12.2016
comment
Вы уверены, что ваш поток идет if (!categories.isEmpty())? Попробуйте отладку.   -  person Devendra Singh    schedule 08.12.2016
comment
да, он входит в этот блок, этот код отлично работает на 5-дюймовых мобильных устройствах, проблема в 7- и 10-дюймовых планшетах   -  person Gurupriyan K S    schedule 08.12.2016
comment
Может быть, в планшете ваш код будет следующим if(), поскольку видимость recyclerview GONE.   -  person Devendra Singh    schedule 08.12.2016
comment
нет это я уже проверил. Я не знаю, почему один и тот же код ведет себя по-разному на разных типах устройств.   -  person Gurupriyan K S    schedule 08.12.2016
comment
Наконец я нашел решение от stackoverflow   -  person Gurupriyan K S    schedule 09.12.2016