#android #contextmenu #simpleadapter
#Android #контекстное меню #simpleadapter
Вопрос:
Привет, мои коллеги-разработчики Droid! У меня проблема, которая уже некоторое время не дает мне покоя. Я надеюсь, что кто-нибудь сможет мне помочь, чтобы я мог продвигаться вперед с learn’n.
У меня возникли проблемы с подключением ContextMenu к моему SimpleAdapter. Я провел обширные поиски, но не могу найти или «соединить точки» для решения этой проблемы. Я не делаю ничего особенного ни с simpleadapter, ни с ContextMenu.
Моя настройка кажется правильной, потому что onListItemClick в listview возвращает идентификатор, который я загрузил в список, поэтому я знаю, что все настроено правильно.
Это общедоступный класс, который расширяет ListActivity
Вот что у меня есть на данный момент…
Мой ROW.xml Здесь список загружается нормально
...<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
<TextView
android:id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="No data"/>
Фрагмент SimpleAdapter. Это работает нормально.
SimpleAdapter notes = new SimpleAdapter(
this,
resourceNames,
R.layout.list_question_row,
new String[] { "qid", "line1","line2", "img", "img2" },
new int[] { R.id.question_id, R.id.text1, R.id.text2, R.id.img, R.id.img2 } );
;
setListAdapter( notes );
Вот где все ломается. Кажется, я не могу понять, как подключить setOnCreateContextMenuListener к SimpleAdapter / ListView.
Кроме того, R.id.list не распознается Eclipse. Я попытался переключить идентификатор XML-макета на @android:id / list, но, похоже, это тоже не сработало. Кажется, я не могу получить ссылку на идентификатор списка ListView.
setOnCreateContextMenuListener(new OnCreateContextMenuListener(){
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if (v.getId()==R.id.list) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle("Action Menu");
menu.add(0, MENU_EDIT, 0, "Edit");
menu.add(0, MENU_DELETE, 0, "Delete");
}
}; //end of onCreateContextMenu
Я надеюсь, что это что-то простое в решении! Заранее спасибо за всю вашу помощь.
Ответ №1:
Вместо этого R.id.list
попробуйте android.R.id.list
.
Комментарии:
1. Это просто безумие! Все часы, которые я потратил на поиски решения, и никогда не видел, чтобы оно использовалось. Большое тебе спасибо, Мэтт!