【问题标题】:Get ContextMenu item ID获取 ContextMenu 项 ID
【发布时间】:2014-07-17 20:14:02
【问题描述】:

我有一个简单的布局,其中很少有文本视图。在这里,我要做的是定义一个名称,并使用 contentProvider 将其保存到数据库中。然后,从数据库中读取此名称并显示在 textView 上。

这是我第一次获取保存在数据库中的项目的方式:

Cursor c = getContentResolver().query(TravelersProvider.CONTENT_URI, PROJECTION, null, null, null);

投影是:

String[] PROJECTION = {Travelers._ID, Travelers.NAME};

现在我需要做的是:

  • 创建 contextMenu,当我单击带有名称的 textview 时,我可以编辑或删除它。

这是我将 contextMenu 注册到 TextView 的方式:

txtView1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        registerForContextMenu(v);
    }
});

然后我创建它:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    getMenuInflater().inflate(R.menu.context_menu, menu);
}

最后我定义了触摸时要做什么:

@Override
public boolean onContextItemSelected(MenuItem item) {
    //TODO:
}

这是我需要帮助的地方。基本上,我需要做的是:

  • 定义我接触过的那个元素。这应该会获得一个索引。
  • 获取光标并将其移动到该位置。

【问题讨论】:

    标签: android database contextmenu android-contentprovider android-cursor


    【解决方案1】:

    onCreateContextMenu 挂钩中,有一个View 参数。在此参数上调用 getId() 以确定哪个 TextView 调用了上下文菜单。然后您可以将其存储到一个类变量中,以便在onContextItemSelected 中使用。

    private int contextViewId;
    
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        getMenuInflater().inflate(R.menu.context_menu, menu);
        contextViewId = v.getId();
    }
    
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        // use contextViewId
    }
    

    【讨论】:

    • 一些问题...contextViewId 是什么?细绳?诠释?另外,关于另一件事,我做了与此类似的事情,但使用了带有列表视图的 ResourceCursorAdapter,当我想将光标放入 onContextItemSelected 时,这就是这样做的:Cursor cursor = mCursorAdapter.getCursor(); cursor.moveToPosition(itemPos); 但现在,如我没有使用任何适配器,如何让光标移动到该位置?
    • contextViewId 是为其创建上下文菜单的视图的(整数)ID。这就是您知道用户单击了哪个 TextView 的方式。至于您的光标,您已经向我们展示了如何在您的第一个代码示例中创建光标。只需致电c.moveToPosition。我不知道您如何从 TextView 获取数据库 ID,但您没有给我们足够的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多