ListView單擊和長按彈出上下文菜單(ContextMenu)

ListView單擊和長按彈出上下文菜單(ContextMenu)

1.長按彈出上下文菜單
所有的View 都可以監聽setOnCreateContextMenuListener事件,長按都會彈出上下文菜單 
View.setOnCreateContextMenuListener(OnCreateContextMenuListener l)

或者在activity裏面註冊view的上下文菜單
registerForContextMenu(View view) 

重寫  
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
super.onCreateContextMenu(menu, v, menuInfo); 
 
 
}
 
@Override
public boolean onContextItemSelected(MenuItem item)
{
                 if (item.getItemId() == 0)
                     //處理點擊上下文菜單事件
 
}
}

處理對應的事件。

-----------------------------------------------------------
長按ListView中的一項item彈出上下文菜單
只需要監聽ListView的 setOnCreateContextMenuListener事件即可
然後重寫對應的方法,同上面的一樣。

在onContextItemSelected中獲取 ListView中item對象
@Override
public boolean onContextItemSelected(MenuItem item)
{
  AdapterContextMenuInfo itemInfo = (AdapterContextMenuInfo)item.getMenuInfo();
  // adapter    ListView 中用到的適配器
  Object itemValue = adapter.getItem(itemInfo.position);
  //獲取到item對象後就可以進行任何操作了
               
}  

-----------------------------------------------------------


2. 單擊View彈出上下文菜單

View.setOnCreateContextMenuListener(OnCreateContextMenuListener l)
View.setOnClickListener(OnClickListener l)

需要同時監聽view的單擊事件和上下文菜單事件
然後在View的onClick調用 View.showContextMenu()方法。

如下
View.setOnClickListener(new OnClickListener()

@Override
public void onClick(View v)
{
View.showContextMenu(); 
}

);

然後重新對應的方法,同上一個一樣。


這樣,不論單擊或者長按,都可以彈出上下文菜單。

只要能監聽到view對應的事件,應該都可以彈出上下文菜單,不過沒有經過測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章