У меня есть ListView с заголовком, установленным с помощью ListView.addHeader(...)
Кажется, что он работает просто отлично, за исключением попыток создать контекстное меню.
Когда пользователь нажимает строку подряд, позиция вonCreateContextMenu
обратный вызов отключен одним.Когда пользователь долго нажимает на заголовок, сообщаемая позиция равна 0 (я бы не ожидал обратного вызова), когда пользователь нажимает долго на первую строку, сообщаемая позиция равна 1 вместо 0 и т. Д.
Тот же код работает, как и ожидалось, без заголовка.
Я знаю, что внутренне Android просто создает новый адаптер вокруг моего, когда я устанавливаю заголовок, но я бы предположил, что они обрабатывают настройку позиции перед вызовом обратных вызовов.
Что я вижу ожидаемое поведение?Возможно, я что-то делаю не так?
Вот как я получаю позицию:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int position = info.position;
// this is my workaround, but I'm afraid it's going to bite me in
// the ass if/when GOOG fixes this
if( this.hasHeader() && position > 0 ) position--;