从onContextItemSelected()列表中获取值?

时间:2012-09-21 20:25:36

标签: android android-layout

您想知道我们是否可以获取列表中定义的字段的值,例如来自数据库的id onContextItemSelected()?我创建上下文菜单的代码固定在下面,帮助赞赏,thnx

 public boolean onContextItemSelected(MenuItem item) {

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    long clickedPosition = info.id;

    switch (item.getItemId()) {
    case NEW_MENU_ITEM:
        //callActivity(1);
        break;
    case SAVE_MENU_ITEM:
        //callActivity(2);
        break;
    }
    return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, view, menuInfo);
    menu.setHeaderTitle("Options");
    menu.add(0, NEW_MENU_ITEM, 0, "Delete");
    menu.add(0, SAVE_MENU_ITEM, 1, "Rename");
}

以下代码不会从数据库中删除我的ID

long clickedPosition = info.id;

4 个答案:

答案 0 :(得分:1)

 @Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

    Object obj = getListView().getItemAtPosition(info.position);
    String name = obj.toString();

}

答案 1 :(得分:0)

该字段中返回的值完全取决于您的适配器实现。它会传递给id OnItemClickListener,这是getItemId()在您的适配器上返回的值。

如果您使用CursorAdapter或其变体将数据提供给列表,则_id列是默认返回的值,除非您修改了此方法。对于ArrayAdapter,情况并非如此,您必须添加代码才能返回所需的ID。如果您需要传回比单个int更复杂的数据,则可以使用setTag()在列表项视图上设置标记,并从ContextMenuInfo开始检索targetView是它携带的参数之一。

答案 2 :(得分:0)

您可以通过添加来检索此列表中元素的位置  int id= info.position  在onContextItemSelected;

希望有所帮助

答案 3 :(得分:0)

  

将database_id设置为lisviewItem视图的标记。

    view.setTag(database_id );

将onContextItemSelected(MenuItem项)中的database_id作为

    @Override
    public boolean onContextItemSelected(android.view.MenuItem item) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
                .getMenuInfo();
        int listPosition = info.position;


        switch (item.getItemId()) {

        case call:

            View view = info.targetView;
            String database_id=(String) view.getTag();
            return true;
        case defaullt: 
            return true;


        }
        return super.onContextItemSelected(item);
    }