Страницы

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

вторник, 31 декабря 2019 г.

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

#java #android #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()); 
         }
});

    


Ответы

Ответ 1



Ваша ошибка в том, что вы пытаетесь получить 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

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

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