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){}