SimpleAdapter и ContextMenu

#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. Это просто безумие! Все часы, которые я потратил на поиски решения, и никогда не видел, чтобы оно использовалось. Большое тебе спасибо, Мэтт!