По какой-то причине мой onListItemClick (View listView, View view, int position, long id) {} не срабатывает при определенных условиях. Мое приложение работает так. ListActivity запускает другое действие, а иногда и пользователи или другие условия могут привести к завершению этой операции с результатом. При первом запуске ListActivity, что означает, что вызывается метод onCreate, всегда работает onListemClick(). То же самое происходит с тем, что пользователи впервые возвращаются к одному и тому же действию, тогда работает onListItemClick. Проблема возникает во второй раз, когда пользователи возвращаются к ListActivity, тогда onListItemClick вообще не запускается, как будто нет прослушивателя, прикрепленного к просмотрам вообще.ListActivity - onListItemClick
Я дважды проверял, что установлен списокAdapter. Это стандартный 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 и первый раз, когда пользователь переходит обратно в currentactivity.
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);
}
Метод oncreate onlly вызывает super.onCreate, фактическая инициализация класса происходит в onResume, так как этот метод вызывается, даже если активность возобновляется и не создается. Поскольку слушатель является «этим», он не может действительно быть нулевым, я думаю, и он действительно работает один раз после того, как пользователь перешел от другого действия. Я дважды проверил, что значения не равны нулю. – Geir