#android #events #listview #onclick
#Android #Мероприятия #listview #onclick
Вопрос:
Android ListView headerview не может реагировать на событие щелчка, иногда, когда headerview получает фокус в режиме клавиатуры, затем щелкните его в сенсорном режиме. Шаги по повторению этого сценария: 1. прокрутите listview, пока headerview не исчезнет из поля зрения 2. сделайте так, чтобы headerview фокусировался в режиме клавиатуры 3. щелкните headerview в сенсорном режиме, тогда headerview может реагировать только на событие касания и не может реагировать на событие щелчка. Но на некоторых устройствах этот сценарий не может произойти.
Ожидайте: headerview может реагировать на событие щелчка в любое время, когда мы его видим
Версия Android: 2.2 / 2.3 Устройство: некоторые устройства с трекболом или жесткой клавиатурой
Мне нужно, чтобы headerview мог реагировать на событие щелчка в любое время. Итак, кто-нибудь может выяснить причину этого сценария? и дайте мне несколько советов, чтобы исправить это? Любой совет приветствуется, заранее спасибо.
Комментарии:
1. Используете ли вы onItemClickedListener в списке или OnClickListener в представлении внутри представления заголовка?
2. да, я действительно использую onItemClickedListener в списке, но в headerView также есть OnClickListener для себя.
Ответ №1:
У меня была такая же проблема. Я не знаю, почему это странно, но я смог решить проблему, не используя addHeaderView()
.
Просто добавьте заголовок из адаптера как часть строки: mListView.setItemsCanFocus(true);
@Override
public int getItemViewType(int position) {
return position == 0 ? 0 : 1;
}
@Override
public int getViewTypeCount() {
return 2;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
if (getItemViewType(position) == 0) {
LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.music_list_header_view_2, null);
} else {
LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.music_favorite_list_row, null);
}
}
}
надеюсь, это поможет!