2012-09-21 34 views
2

嗨想知道我們可以得到在列表中定義的字段的值,如數據庫中的ID onContextItemSelected()?我創建上下文菜單如下寄託代碼,幫助表示讚賞,日Thnx從onContextItemSelected()獲取列表的值?

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"); 
} 

下面的代碼不是從數據庫

long clickedPosition = info.id; 

回答

0

在這一領域返回的值完全取決於你的適配器實現退休我的ID。這將是相同的id,將傳遞到OnItemClickListener,這是getItemId()在您的適配器上返回的值。

如果您使用的是CursorAdapter或其變體將數據提供給列表,則_id列是默認返回的值,除非您修改了此方法。對於ArrayAdapter,情況並非如此,您必須添加代碼才能返回所需的ID。如果您需要傳回更復雜的數據而不僅僅是一個int,則可以使用setTag()在列表項視圖上設置標籤,並從ContextMenuInfo檢索它,因爲targetView是它所攜帶的參數之一。

0

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

希望它可以幫助

0

設置爲database_id的標記,你lisviewItem視圖。

view.setTag(database_id); 

而且從onContextItemSelected(菜單項項目)獲得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); 
    } 
1
@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 

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

}