2013-01-06 2 views
0

Прежде всего я новичок в программировании Android и в StackOverflow !!Запуск меню опций из списка в Android

Я создал динамическое представление ListView, я имею в виду, я загружаю список строк из файла.

Теперь, что я хочу сделать, это запустить меню, например меню опций, когда элемент был нажат.

Я искал, и простой способ - использовать метод надувания, но он использует меню в качестве аргумента. Однако я настроил прослушиватель с OnItemClick, который использует в качестве аргумента AdapterView, View arg1, int arg2 и long arg3, но мне нужно меню для метода надувания ...: S

вот код для mainactivity:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menu); 

    ListView list = (ListView) findViewById(R.id.listView1); 

    func = getTurmas(); 
    list.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, func)); 

    list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      public void onItemClick(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       //System.out.println("teste"); 
       MenuInflater inflater = getMenuInflater(); 
       inflater.inflate(R.menu.menu_showup, null); 
       //my problem is here,instead of NULL I should put a menu, but how? 

      } 
      });   
} 

Примечание: в папке меню у меня есть меню созданное с помощью 3-х пунктов

заранее спасибо за любую помощь

с наилучшими пожеланиями,

Karloz

ответ

0

Создание ContextMenu будет делать вам работать в лучшем способе меню настройки для listView

Это должен сделать трюк. Не забудьте: registerForContextMenu (lvUsers);

ListView list = (ListView)findViewById(R.id.listView1); 
func=getTurmas(); 
list.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1,func)); 
registerForContextMenu(list); 

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
{ 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.context_menu, menu); 
} 

public boolean onContextItemSelected(MenuItem item) 
{ 
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
switch (item.getItemId()) 
{ 
case R.id.edit: 
editNote(info.id); 
return true; 
case R.id.delete: 
deleteNote(info.id); 
return true; 
default: 
return true;  
} 
return super.onContextItemSelected(item); 
} 

Рез/меню/context_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/edit" 
     android:title="@string/edit" /> 
<item android:id="@+id/delete" 
     android:title="@string/delete" /> 
</menu> 
+0

Привет Vikalp Patel! Спасибо за ваш ответ! Я получил то, что объяснил, и я его реализовал. Однако он не работал. Первые три строки, которые вы предлагаете в своем коде, я ввел в метод OnCreate (Bundle savedInstanceState) действия. Это верно? и 2-я строка, когда я установил адаптер, мне пришлось изменить на list.setAdapter (новый ArrayAdapter (это android.R.layout.simple_list_item_1, func)); , потому что, когда я помещаю вашу строку, он говорит мне: «Невозможно создать экземпляр типа ListAdapter» даже после импорта класса List.adapter. У вас есть идеи, почему это так? BR Karloz –

+0

@ karloz.smith Надеюсь, вы получите 'ArrayList-via getTurmas() в func'very правильно. –

+0

@ karloz.smith Я отредактировал код, пожалуйста, просмотрите его. Попробуйте дважды проверить свой 'func = getTurmas()' ли он возвращает 'Array' или нет ?. Также попробуйте просто проверить код, работает ли он или нет. 'String [] func = new String [] {« Android »,« iPhone »,« WindowsMobile », « Blackberry »,« WebOS »,« Ubuntu », «Windows7», «Max OS X», «Linux», «OS/2»}; '.' Вычислите свой func = getTurmas() во время тестирования ' –

Смежные вопросы