当用户点击适配器内的视图时,我想使用上下文菜单。问题是每个视图的OnClick都在一个不是活动的类[它是一个扩展BaseAdapter的类],在公共视图getView(最终int位置,View convertView,ViewGroup父级)中。
因此,当我尝试创建上下文菜单或在此类中仅使用扩展BaseAdapter的registerForContextMenu注册时,它是不可能的。
所以问题是:onclick在这个Not Activity类中。是否可以为这个类提供一个允许它启动上下文菜单的参数?
答案 0 :(得分:2)
你可以使用AlertDialog ..
它看起来像......
gridview.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id)
{
showOptionsMenu(position);
return true;
}
});
public void showOptionsMenu(int position)
{
new AlertDialog.Builder(this)
.setTitle("test").setCancelable(true).setItems(R.array.myOptions,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
//take actions here according to what the user has selected
}
}
)
.show();
}
答案 1 :(得分:2)
当用户点击适配器内的视图时,我想使用上下文菜单。
希望不是。当用户长按AdapterView
中的项目时,您可以使用上下文菜单。 Here is a sample project证明了这一点。
其他任何内容(例如,当用户点击适配器内的视图时弹出某些内容)应为AlertDialog
,如@ coder_For_Life22所示。
因此,当我尝试创建上下文菜单或在此类中注册只能扩展BaseAdapter的registerForContextMenu时,它是不可能的。
对于registerForContextMenu()
,您只需拨打AdapterView
一次。在您致电onCreate()
并因此创建了setContentView()
后,您可以在活动的AdapterView
执行此操作。
其他任何内容都应该是AlertDialog
。
是否可以为此类提供允许其启动上下文菜单的参数?
您不应该“为此类提供允许其启动上下文菜单的参数”,因为您只需registerForContextMenu()
一次AdapterView
。
其他任何内容都应该是AlertDialog
。您可以在Adapter
上添加一个构造函数,该构造函数将Activity
作为参数,Adapter
保留并用于AlertDialog
。或者,如果Adapter
是Activity
的内部类,则只需使用MyActivityName.this
来引用Activity
。