2012-01-18 160 views
1

我有一個對每個短信點擊我要顯示自定義的上下文菜單項列表。我到處都找過了一個例子,嘗試了很多東西,但我能來最接近的是要有一個長期的點擊菜單showup(和菜單是不是每個項目不同)。這是代碼,任何幫助都會很棒。請注意,在閱讀了一大堆教程之後,我從Activity中分類了這些教程。Android的ListView的單次點擊右鍵菜單

public class EventListActivity extends Activity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
       Log.i("ME", "Event List Activity Into On Create "); 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.event_list); 
      Log.i("ME", "Event List Activity Into On Create 1 "); 
      String[] values = new String[] {"Emerald Greens","Dahlgtreen","Edinborough","Pebble Creek","Gross"}; 
      Log.i("ME", "Event List Activity Into On Create 2"); 

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

      Log.i("ME", "Event List Activity Into On Create 2a"); 


      //ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.event_list,R.id.label,values); 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.event_list_item,values); 

      Log.i("ME", "Event List Activity Into On Create 3"); 
      //setListAdapter(adapter); 
      listView.setAdapter(adapter); 
      Log.i("ME", "Event List Activity Into On Create 4"); 

      registerForContextMenu(listView); 
      Log.i("ME", "Event List Activity Into On Create 6"); 

     } 




    protected void onListItemClick(ListView listView, View v, int pos, long id) { 
     String item = (String)listView.getAdapter().getItem(pos); 
     Toast.makeText(this, item+" Selected pos:"+pos+": id:"+id+":", Toast.LENGTH_LONG).show(); 


    } 


    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
     Log.i("ME", "OnCreateContextMenu "); 
     if (v.getId()==R.id.list) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 
     //menu.setHeaderTitle(Countries[info.position]); 
     menu.setHeaderTitle("Blippo"); 
     //String[] menuItems = getResources().getStringArray(R.array.menu); 
     String[] menuItems = new String[] {"Menu a","Menub"}; 
     for (int i = 0; i<menuItems.length; i++) { 
      menu.add(Menu.NONE, i, i, menuItems[i]); 
     } 
     } 
    } 

    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
     int menuItemIndex = item.getItemId(); 
     //String[] menuItems = getResources().getStringArray(R.array.menu); 
     String[] menuItems = new String[] {"Menu a","Menub"}; 
     String menuItemName = menuItems[menuItemIndex]; 

     //String listItemName = Countries[info.position]; 
     String listItemName = "hardcoded"; 

     Toast.makeText(this, item+" Selected Submenu", Toast.LENGTH_LONG).show(); 

     return true; 
    } 

    } 

回答

2

你可以使用這個滑動抽屜上的每一個你可以打開你的滑動抽屜,並顯示您的項目

0

其Android規則文本菜單可以彈出僅當您執行的視圖長按項目的點擊那與contextMenu有關聯。所以我想說清楚它不可能在任何其他事件上。

Second Problem--> menu was not distinct per item 

您註冊菜單的ListView這樣怎能檢測item.When你長按文本菜單一樣會open.When你點擊任何一行行的ListView所以它會打開相同的菜單。

如果你想這樣做的一次點擊
0

,你爲什麼不嘗試打開定製對話框,用行動(選件)的列表,打開列表項單擊該對話框,並關閉它,當你選擇一個動作。

+0

你有如何做到這一點一些樣品或網站,我可以查出來嗎? – PJC 2012-01-18 16:02:02

+0

讓我提出一兩件事,我希望你知道如何顯示一個列表視圖包含許多行, 1)創建活動,本次活動展示行動的清單, 2)當你想顯示的項目點擊右鍵菜單。打開這個活動。 3)在清單文件的活動聲明中添加主題:對話框,所以新的活動看起來像一個彈出式對話框。並採取行動,並完成這項活動.. – AAnkit 2012-01-18 17:28:52

0

上下文菜單將在長按才起作用。如果您希望我爲您提供的代碼在列表項onclick()上執行一些操作並打開列表項上的快捷菜單,請讓我知道。

+0

我將不勝感激一些示例代碼,在此先感謝! – PJC 2012-01-18 16:01:26