Я новичок в разработке для Android и работаю над приложением для планшета под управлением Android 3.1.
Основное действие поделено на более функциональные части, и в одной из них показан список некоторых элементов, при долгом нажатии на элемент должно открываться контекстное меню.
У меня проблема, потому что я не могу заставить ее работать.
Основная деятельность расширяет MapActivity, поскольку она также содержит карту ...
ListView использует SimpleCursorAdapter .
Представление списка зарегистрировано для контекстного меню в методе onCreate основного действия:
alarmList = (ListView) findViewById (R.id.alarmList);
registerForContextMenu(alarmList);
И основная активность переопределяет onCreateContextMenu , а также onContextItemSelected методы, но они никогда не вызываются при щелчке элемента.
Мне было интересно, что при использовании ArrayAdapter и простой строковой индикации элемента контекстное меню списка работает хорошо, и в списке предоставляется хороший выбор элементов при нажатии (с некоторыми приятными затуханиями эффект). Но когда я меняю адаптер на SimpleCursorAdapter , представление списка вообще не реагирует на нажатия. Чтобы «симулировать» клики, я добавил в ListView атрибут clickable:
<ListView android:id="@+id/alarmList" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true"/>
И отдельный элемент списка форматируется с использованием своего собственного макета, который начинается следующим образом:
[Alarm_list_item.xml:]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout" android:layout_width="match_parent" android:background="@color/alarm_list_bg"
android:clickable="true" android:baselineAligned="true" android:layout_height="wrap_content" android:minHeight="65dp">
...
[alarm_list_bg:]
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false" android:drawable="@color/black_12"/>
<item android:state_pressed="true" android:drawable="@color/grey_12" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/blue_12" />
</selector>
Я пытался зарегистрировать некоторых слушателей непосредственно в ListView экземпляре ( OnItemLongClickListener , OnCreateContextMenuListener , OnItemClickListener ), но ни один из их зовут.
Не могли бы вы представить, что может быть не так?
С уважением
Mirec