По какой-то причине мой onListItemClick(View listView, View view, int position, long id){} не срабатывает при определенных условиях. Мое приложение работает так. ListActivity запускает другое действие, и иногда пользователи или другие условия могут привести к завершению этого действия с результатом. При первом запуске ListActivity, что означает вызов метода onCreate, всегда работает onListemClick(). То же самое происходит в первый раз, когда пользователи возвращаются к той же активности, тогда onListItemClick всегда работает. Проблема возникает во второй раз, когда пользователи возвращаются к ListActivity, тогда onListItemClick вообще не срабатывает, как будто прослушиватель вообще не подключен к представлениям.
Я дважды проверил, установлен ли listAdapter. Это стандартный ArrayAdapter. Все остальные слушатели работают, поэтому мои подозрения вращаются вокруг того, что ListActivity по какой-то причине не используется в качестве слушателя, но я не могу понять, почему. Это один и тот же код с одинаковыми значениями, работающими оба раза, но кажется, что прослушиватель по какой-то причине обнулен. Код выполняется из метода onResume в строке после вызова setContentView(int id). Кто-нибудь знает, почему это происходит?
Следующий код инициирует верстку, там проблем нет, все работает как задумано.
private void initLayout(){
projectsToList(user.getProjects());
ttvEmailField = (TextView) findViewById(R.id.ttv_email);
ttvNameField = (TextView) findViewById(R.id.ttv_username);
String email = user.getEMail();
String name = user.getName();
if(email != null && email.length() > 0){
ttvEmailField.setText(user.getEMail());
}
if(name != null && email.length() > 0){
ttvNameField.setText(user.getName());
}
btnLogout = (Button) findViewById(R.id.btn_logout);
btnLogout.setOnClickListener(this);
}
Приведенный ниже код устанавливает ArrayAdapter, onListItem работает только после onCreate и при первом переходе пользователя к текущей активности.
private void projectsToList(List<ProjectPojo> projects){
int max = projects.size();
String[] arrProjects = new String[max];
for(int i = 0; i < max; ++i){
arrProjects[i] = projects.get(i).getName();
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item_simpletext, R.id.ttv_listtextview, arrProjects);
setListAdapter(adapter);
}