gpt4 book ai didi

android - 使用 arrayadapter 或底层数据进行操作?

转载 作者:太空狗 更新时间:2023-10-29 15:21:14 27 4
gpt4 key购买 nike

在 CommonsWare 的The Busy Coders Guide to Android Development 一书中,有一章解释了如何使用上下文菜单。

在那一章的一个例子中,上下文菜单提供了从 ListView 中删除项目的选项,该 ListView 是从 ArrayList<String> 生成的。名为 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(...)所在的行由于以下事实,被称为对我来说似乎很奇怪:

假设 words对象包含以下项目(按顺序)

  • 阿尔法
  • 测试版
  • Gamma
  • 阿尔法

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

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

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

我不太擅长 Java 和 Android 编程,所以我想听听您对此的看法,因为我想确保我清楚应该如何使用适配器。

最佳答案

你的想法听起来不错。

如果该示例的行为与您所描述的一样,则该示例已失效,您应该将其告诉 Mark,以便他也可以检查它(他可能无论如何都会这样做,因为他在该站点上非常活跃)。

关于android - 使用 arrayadapter 或底层数据进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com