3
在書中來自CommonsWare的Android Development開發指南中,有一章解釋瞭如何使用上下文菜單。使用陣列適配器或使用下層數據操作?
在該章節的一個示例中,上下文菜單提供了從列表視圖中刪除項目的選項,該列表視圖是從名爲words
的ArrayList<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編程的好,所以我想聽聽你的意見這一點,因爲我要確保我很好理解適配器應該如何使用。