GridView Android中的上下文菜单
我有GridView Android中的上下文菜单,android,android-contextmenu,Android,Android Contextmenu,我有GridView: GridView gridView = (GridView) findViewById(R.id.grid_view); // Instance of ImageAdapter Class final String [] imageNames = {"knee_kg","knee_ks","knee_kp","knee_kg_90", "pipe_knee", "cover", "funnel", "crat
GridView
:
GridView gridView = (GridView) findViewById(R.id.grid_view);
// Instance of ImageAdapter Class
final String [] imageNames = {"knee_kg","knee_ks","knee_kp","knee_kg_90",
"pipe_knee", "cover", "funnel", "crater"};
Integer[] mThumbIds = new Integer[imageNames.length];
for (int i = 0; i<imageNames.length; i++){
Integer resID = getResources().getIdentifier(imageNames[i], "drawable",
getPackageName());
mThumbIds[i] = resID;
}
我只想在两项单击上创建关联菜单:“膝关节”
,“膝关节”
。
另一方面是:
Intent intentClass = new Intent(getApplicationContext(), clazz);
startActivity(intentClass);
有可能吗?有可能。您应该使用
int position
:gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if (position == 0 || position == 2 /*and other, or just: position < 5*/)
{
//Code for positio 0 and 2
}
else
{
//Code for othe positions
}
}
});
gridView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3){
如果(位置==0 | |位置==2/*和其他,或仅:位置<5*/)
{
//位置0和2的代码
}
其他的
{
//其他职位代码
}
}
});
用于显示上下文菜单。这是可能的。您应该使用
int position
:gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if (position == 0 || position == 2 /*and other, or just: position < 5*/)
{
//Code for positio 0 and 2
}
else
{
//Code for othe positions
}
}
});
gridView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3){
如果(位置==0 | |位置==2/*和其他,或仅:位置<5*/)
{
//位置0和2的代码
}
其他的
{
//其他职位代码
}
}
});
用于显示关联菜单。首先为关联菜单注册网格视图
registerForContextMenu(grid);
然后覆盖一个函数
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.context_menu, menu);
GridView gv = (GridView) v;
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
int position = info.position;
if(!(position==0 || position==2))
{
menu.close();
)
}
上下文菜单侦听器
@Override
public boolean onContextItemSelected(MenuItem item) {
return true;
}
首先为上下文菜单注册您的gridView
registerForContextMenu(grid);
然后覆盖一个函数
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.context_menu, menu);
GridView gv = (GridView) v;
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
int position = info.position;
if(!(position==0 || position==2))
{
menu.close();
)
}
上下文菜单侦听器
@Override
public boolean onContextItemSelected(MenuItem item) {
return true;
}
这似乎是一个老话题,但我面临着同样的问题,我想放弃对我有用的东西。基于@Abhishek命题,我所做的只是将
menu.close()
语句替换为menu.clear()
,瞧!上下文仅显示在位置0和2上
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.context_menu, menu);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
int position = info.position;
if(!(position==0 || position==2)){
menu.clear();
}
}
这似乎是一个老话题,但我面临着同样的问题,我想放弃对我有用的东西。基于@Abhishek命题,我所做的只是将
menu.close()
语句替换为menu.clear()
,瞧!上下文仅显示在位置0和2上
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.context_menu, menu);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
int position = info.position;
if(!(position==0 || position==2)){
menu.clear();
}
}
我只想为位置0和2创建上下文菜单,就像你想要的一样。我不明白,现在就像单击位置0或2打开clazz名称更改一样。只需编辑if(position==0 | | position==2){/*全部删除,或者添加如果你要单击位置0,应该是什么。如何调用上下文菜单:public void onItemClick(AdapterView arg0,View arg1,int position,long arg3){}我只想为位置0和2创建上下文菜单,就像你想要的那样。我不明白,现在就像单击位置0或位置2打开clazz name更改一样。只需在if(position==0 | | position==2){/*中编辑代码即可删除所有内容,或者添加如果你要单击位置0,位置2*/}.如何从以下位置调用上下文菜单:public void onItemClick(AdapterView arg0,View arg1,int position,long arg3){}