如何在ListView中实现自定义视图的上下文菜单?

时间:2012-04-10 08:41:30

标签: android listview contextmenu

我正在开发Android ICS联系人移植。我想为星号(收藏夹)TAB添加上下文菜单,但该片段中的ListView非常特殊。有一个普通的ListView,ListView中的每个项目都有两个小的自定义View。我想实现当用户长按小视图时,它会为我显示一个上下文菜单。 我该怎么办?请给我一个提示!非常感谢!

2 个答案:

答案 0 :(得分:1)

在您创建小视图的位置添加此内容,

    registerForContextMenu(YourSmallView);  

在您的活动中,您可以处理上下文菜单

 @Override  
   public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
super.onCreateContextMenu(menu, v, menuInfo);  
    menu.setHeaderTitle("Context Menu");  
    menu.add(0, v.getId(), 0, "Action 1");  
    menu.add(0, v.getId(), 0, "Action 2");  
}  

 @Override  
   public boolean onContextItemSelected(MenuItem item) {  
        if(item.getTitle()=="Action 1"){
              function1(item.getItemId());
        }  
        else if(item.getTitle()=="Action 2"){
             function2(item.getItemId());
         }  
        else {
            return false;
        }  
    return true;  
    }  

或者您可以为视图设置长按一下监听器

view.setOnLongClickListener(listener);

答案 1 :(得分:1)

如果您使用的是自定义列表项,则可以在所需视图上注册特定的回调例程。这样做的地方在你的bindView()或getView()方法中。

TextView tt = (TextView) v.findViewById(R.id.text1);
TextView bt = (TextView) v.findViewById(R.id.text2);
tt.setOnLongClickListener(myLongOnClickListener);