Я боролся с этой ошибкой Сота в течение нескольких дней и нашел выход из нее, хотя я не уверен, что ваша ситуация похожа на мою.
В моем случае, теперь я могу с уверенностью сказать, что сообщение «Невозможно инициировать перетаскивание» было в конце цепной реакции, начиная с обновлений, сделанных для адаптера данных, поддерживающего ListView (элементы которого я пытался разрешить пользователю перетащить). На самом деле проблема была в «отбрасывании», когда я что-то изменил в базовых данных и попросил адаптер уведомить ListView о DataSetChanged.
Что удивительно, что волшебство для меня заменяло каждый звонок:
lv.getAdapter().notifyDataSetChanged();
с:
resetListView(lv)
определяется как:
private void resetListView(ListView lv)
{
int position = lv.getFirstVisiblePosition();
int y = lv.getChildAt(0).getTop();
lv.setAdapter(lv.getAdapter());
lv.setSelectionFromTop(position, y);
}
Подобно notifyDataSetChanged (), этот метод гарантирует, что ListView обновляется с использованием последних данных адаптера, но, кроме того, он также сбрасывает некоторые внутренние структуры внутри ListView, предотвращая последующую цепную реакцию перетаскивания. приводя к вышеупомянутому исключению.
Жизнь с сотами НЕ легка.