Код дайте по нормальному. В андроиде помимо RecyclerView и RecyclerViewAdapter есть еще и ListView, который также в паре с адаптером используется.
Дальше, может я чего-то не понимаю (до сих пор по привычке и в целях совместимости на ListView списки делаю, RecyclerView не трогал по нормальному, так как задач с большими списками не было), но каким макаром вешается onItemClickListener() на адаптер? Или у вас собственная реализация адаптера, через метод которого Вы назначаете на целевой RecyclerView анонимную реализацию класса ListItemClickListener, унаследованную от RecyclerTouchListener????
Я не поленился, и нагуглил ListItemClickListener в блоге какого-то глубокоуважаемого индуса: 
ListItemClickListener
Вы оттуда копипастили? А откуда Вы скопипастили тогда "гениальное" решение назначать обработку событий не на View, а на адаптер? Это же в корне противоречит MVC архитектуре dataset-adapter-view. И ладно, что в блоге с примером ListItemClickListener используется просто дурацкая схема именования класса, которая сбивает с толку. Тут то архитектурная ошибка на уровне шаблонов проектирования.
Резюмируя, предоставленного кода недостаточно, на лицо ошибки проектирования и совершенно дурацкое наименование классов потомков. Также, я не понимаю, зачем наследоваться от регулярного потомка абстрактного RecyclerView.OnItemTouchListener в анонимном то классе. Что это вообще за дичь?
Искать ошибки не имеет смысла. Недостаточно предоставленного кода и дичь какая-то с конкретной реализацией адаптера и RecyclerView.OnItemTouchListener. Вот туториал, я его прочитал, по нему можно сделать правильно: 
https://www.androidhive.info/2016/01/android-worki...
По текущему коду, связанному с RecyclerView - можно оставить только лэйауты. И всё.  Остальное переписать. В этом коде я вижу малоосмысленного Франкенштейна из копипасты. Надеюсь, Вы только учитесь. Если это коммерческий проект какой-то фирмы, дайте, пожалуйста, в личку, её название. Буду обходить её продукты стороной, просто если это планируется в качестве реального кода, с таким "х@@к, х@@к и в продакшен" продуктом иметь дел не хочется, как, впрочем, и работать с такими людьми.
UPD.1 Еще раз пробежался по коду глазами. Что это за дичь?
private void loadData() {
        showLoader();
        loadJson();
}
И
hideLoader();
adapter.notifyDataSetChanged();
метода parseJson(String jsonData)??? Как бы продолжительные операции делаются вне GUI потока, иначе можно ANR получить. Реализуется через 
AssyncTask (простой способ).
UPD.2
@Override
    public void onBackPressed() {
        if (drawer != null && drawer.isDrawerOpen()) {
            drawer.closeDrawer();
        } else {
            AppUtilities.tapPromtToExit(this);
        }
    }
Вот не надо тащить из дикого веба диалоги "А Вы точно хотите выйти?". На андроиде подтверждение выхода из приложения принято делать двойным тапом на back кнопку с Toast после первого тапа. Диалог следует вешать только в тех случаях, когда при случайном выходите возможна потеря пользовательских данных (к примеру, набора текста). И то, если правильно подходить к разработке Android приложений, таких ситуаций возникать не должно в принципе. В догонку: 
Understand the Activity Lifecycle
UPD.3 Ну и хоть бы код форматировали. В Android Studio хоткей по умолчанию CTRL-SHIFT-ALT-L.