2011-10-05 65 views
3

在書中來自CommonsWare的Android Development開發指南中,有一章解釋瞭如何使用上下文菜單。使用陣列適配器或使用下層數據操作?

在該章節的一個示例中,上下文菜單提供了從列表視圖中刪除項目的選項,該列表視圖是從名爲wordsArrayList<String>對象中生成的。

在這個例子中onContextItemSelected方法的實現是這樣的:

public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
    ArrayAdapter<String> adapter=(ArrayAdapter<String>)getListAdapter(); 
    switch (item.getItemId()) { 
    case R.id.remove: 
    adapter.remove(words.get(info.position)); 
    return true; 
    default: 
    ... 
} 

其中adapter.remove(...)被稱爲該行覺得奇怪,因爲下面的事實我:

比方說,words對象包含以下項目(按照這個順序)

  • 阿爾法
  • 測試版
  • 伽馬
  • 阿爾法

現在,當用戶在該第二阿爾法加載的上下文菜單並選擇選項,可以消除它,所提到的行實際上消除了阿爾法。這對我來說似乎是錯誤的。

相反,我會做這樣的事情:

... 
words.remove(info.position); 
adapter.notifyDataSetChanged(); 
... 

我不是用Java和Android編程的好,所以我想聽聽你的意見這一點,因爲我要確保我很好理解適配器應該如何使用。

回答

0

你的想法聽起來不錯。

如果它的行爲像你所描述的那樣,你應該告訴馬克關於它的例子,以便他可以檢查它(因爲他在本網站非常活躍,他可能會這樣做)。

相關問題