2010-11-05 81 views
1

我有一個像網格一樣的自定義佈局。我註冊它爲contextmenu。現在,如果我長時間點擊它,我想知道用戶點擊的位置。我必須讓我的自定義佈局實現MenuInfo的權利?但是點擊位置呢?如何找出哪些網格行被點擊了contextmenu?

回答

1
@Override 
public boolean onContextItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case DELETE_ID: 
      AdapterView.AdapterContextMenuInfo info= 
       (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 

      delete(info.id); 
      return(true); 
    } 

    return(super.onOptionsItemSelected(item)); 
} 

onContextItemSelected(),如果上下文菜單是用於AdapterView(例如,GridView)時,可以投的item.getMenuInfo()對象到AdapterView.AdapterContextMenuInfo對象。該對象有一個id和一個position字段。如果您使用的是CursorAdapter,則id_IDposition是適配器的索引。

+0

謝謝......我已經知道如何以這種方式獲得AdapterView的ID。但我的問題是,我有一個不擴展GridView的自定義佈局。我想我必須在該佈局類中自己創建一個MenuInfo,但我不知道如何獲取點擊位置,我需要一個MenuInfo對象中的行號......: -/ – cody 2010-11-05 15:01:39

+0

@cody:哦,哎呀,對不起,我以爲你寫過*它是* GridView'。 「但我不知道如何獲得點擊位置」 - 或者通過「AdapterView」代碼來查看它們是如何實現的,或者爲每個單元格而不是整個網格註冊一個上下文菜單。 – CommonsWare 2010-11-05 15:19:59

+0

也許我不得不在我的類中重寫setOnCreateContextMenuListener(),或者其他東西。我需要上下文菜單才能在該位置創建一個新的孩子。 – cody 2010-11-05 15:26:01