android – 如何根据ListActivity中长按的项目设置特定的上下文菜单?

前端之家收集整理的这篇文章主要介绍了android – 如何根据ListActivity中长按的项目设置特定的上下文菜单?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个列表活动,我选择手动添加第一个项目“添加新项目…”.

我使用registerForContextMenu(getListView())注册了整个列表视图的上下文菜单;直接进入onCreate.

构建上下文菜单时,系统调用onCreateContextMenu(ContextMenu菜单,View v,ContextMenuInfo menuInfo). View v是listView,我找不到一种方法来知道列表视图中的哪个项目被长按.

我可以创建一个xml布局,其中包含“添加新项目…”的布局,然后添加一个listview,它将由活动填充,并且会对上下文菜单做出反应,但我确信有一种在没有任何xml布局的情况下解决此问题的方法.

我尝试使用registerForContextMenu在listview中注册每个视图,但是listview不再响应touch.

这是我的活动代码列表:

public class AMain extends ListActivity {
    private Listlogo = (ImageView) itemLayout.findViewById(R.id.logo);
            TextView pregName = (TextView) itemLayout.findViewById(R.id.pregName);

            if (position == 0) {
                itemLayout.setFocusable(false);
                itemLayout.setFocusableInTouchMode(false);
                pregName.setText(getString(R.string.addPreg));
            } else {
                logo.setVisibility(View.INVISIBLE);
                pregName.setText(pregList.get(position-1));
            }

            itemLayout.setId(position);

            return itemLayout;
        }
    }

    @Override
    protected void onListItemClick(ListView l,int position,long id) {
        super.onListItemClick(l,position,id);
        if (position == 0) {
            startActivity(prepareIntent(AShowPregnancy.class,0));
        } else {
            showPregnancy(position-1);
        }
    }

    void showPregnancy(int pregId) {
        startActivity(prepareIntent(AShowPregnancy.class,pregId));
    }

    void editPregnancy(int pregId) {
        startActivity(prepareIntent(ANewPregnancy.class,pregId));
    }

    Intent prepareIntent(Class

谢谢阅读.希望你能帮忙.

最佳答案
哦,天哪,再一次.我发现自己该怎么做,这比简单容易.

AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
// info.position is the position in the ListView

我恨我自己 :)

猜你在找的Android相关文章