Код дайте по нормальному. В андроиде помимо 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.