Страницы

Поиск по вопросам

вторник, 18 декабря 2018 г.

нажатие на Listview закрывает приложение при попытке обратиться к разметке элемента списка

У меня проблема с нажатием в Listview после прокрутки. То есть, если я нажимаю на содержимое, которое было изначально видно, то все ок. Но если я нажимаю прокрутив список (то есть нажимаю на позицию, которая видна не была), то программа вылетает вот с таким текстом в логах:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
Кто сталкивался?
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View itemClicked, int position, long id) { TextView tp = (TextView)listView.getChildAt(position).findViewById(R.id.userid); Log.v("mes",tp.getText().toString()); } });


Ответ

Ваша ошибка в том, что вы пытаетесь получить View из ListView. Так не надо. Нужное вам View, т.е. разметка элемента списка - уже передано в виде второго аргумента метода onItemClick(AdapterView parent, View itemClicked, int position, long id). Сделайте так:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View itemClicked, int position, long id) { TextView tp = (TextView)itemClicked.findViewById(R.id.userid); Log.v("mes",tp.getText().toString()); } });
А ещё лучше - повесьте слушатель внутри адаптера. А ещё лучше - перепишите под RecyclerView

Комментариев нет:

Отправить комментарий