使用arrayadapter或基础数据进行操作?

时间:2011-10-05 15:13:12

标签: android

在CommonsWare的繁忙的Android开发代码指南一书中,有一章解释了如何使用上下文菜单。

在该章的一个示例中,上下文菜单提供了从列表视图中删除项目的选项,该列表视图是从名为ArrayList<String>的{​​{1}}对象生成的。

在示例中,words方法实现如下:

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(...)对象包含以下项目(按此顺序)

  • 阿尔法
  • 测试
  • 加马
  • 阿尔法

现在,当用户在 2nd alfa上加载上下文菜单并选择删除它的选项时,提到的行实际上会删除 1st alfa。这对我来说似乎不对。

相反,我会做这样的事情:

words

我在Java和Android编程方面不是很好,所以我想听听你的意见,因为我想确定我很清楚应该如何使用适配器。

1 个答案:

答案 0 :(得分:0)

你的想法听起来不错。

如果它的行为与你所描述的一样,那么这个例子已经不存在了,你应该告诉Mark这样他也可以检查一下(无论如何他都可以这样做,因为他在这个网站上非常活跃)。