ListView单击和长按弹出上下文菜单(ContextMenu)

来源:互联网 发布:淘宝看自己的好评率 编辑:程序博客网 时间:2024/05/02 04:50
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对应的事件,应该都可以弹出上下文菜单,不过没有经过测试。

原创粉丝点击