【问题标题】:How to modify a ListView item in Android?如何在 Android 中修改 ListView 项?
【发布时间】:2015-02-14 00:23:40
【问题描述】:

我开始学习 Android,我想知道 Android 中是否有一些选项可以让您修改每个项目或视图(我不知道它是如何准确命名的,我的意思是 ArrayList 中的每个项目您在 ListView 中显示)。

好吧,我创建了一个 ListView,它将显示一些位于名为“books”的 ArrayList 中的书籍。

我创建了一个与 ListView 关联的自定义适配器,以在应用程序中显示每个项目以及相应的布局。对于要在 ListView 中显示的每个项目,我还有一个类“书”。

此外,我创建了一个 Intent,我使用 startForActivityResult() 从 MainActivity 调用,我在 Book 类中进行处理,然后我使用 setResult 方法返回 MainActivity 与一本书的所有数据,并使用 onActivityResult() 获取信息和请求代码。

所以我向 ListView 添加项目没有任何问题,只是如果我想修改位于 ListView 中的一些项目(或视图)(例如,如果我有标题和一本书的作者,如果我输入了错误的信息,我希望可以选择更改它)。

我知道,在您单击 ListView 的某些项目的同一时刻,将显示一个新布局以修改错误的信息,因此我在自定义适配器上使用带有 onItemClick 事件的 setOnItemClickListener 方法我之前创建的。在这里,我调用新的 Intent 来使用 startActivityForResult() 方法修改错误信息。

我做了和以前一样的添加一个新项目,但是,而不是使用 custom_adapter.addBook(title,author) 添加一个新项目,我想知道是否有一些选项可以做这样的事情:custom_adapter.modify( title,author) 或 custom_adapter.update(title,author),我的意思是,当您修改了书中所有错误的项目(例如 EditText 是“title”)并且您拥有 MainActivity 中的所有信息时类(因为您使用 setResult 返回了它),如何将它再次放在同一个项目中,在 custom_adapter 和 ArrayList 中更新它。

我在互联网上搜索了它,但没有找到任何东西。

如果我的英语不好,我很抱歉,但我希望它能被理解。

非常感谢!

【问题讨论】:

  • 基本上你通过适配器删除或添加项目。我也发布了一个答案。

标签: android listview adapter


【解决方案1】:

如果我正确理解了您的问题 - 您可以简单地修改支持您的 ArrayAdapterBook 类型的 ArrayList

因此,如果您知道要修改的 Book 对象,那么您只需对 Book 对象本身进行更改即可。只要这个Book 是对您最初添加到ArrayList 的同一对象的引用,您就可以使用它实例化您的ArrayAdapter,然后您就可以调用custom_adapter.notifyDataSetChanged() 来告诉适配器用新数据重绘其子视图.

【讨论】:

  • 好吧,也许我没有正确解释自己。我想要做的是,在我在 ListView 中设置所有项目之后,如果我想修改其中一个,我点击它并出现一个新的布局。在这个布局中将是 2 EditText,带有我们的书的标题和作者以及旧信息,当我更改它并按下“提交”按钮时,我很遗憾这个信息到 MainActivity。我尝试使用 custom_adapter.notifyDataSetChanged() 但我不知道如何准确引用我按下的项目所以我有信息但我不知道如何将它们更新到自定义适配器中。谢谢
  • 啊,好吧 - 您是否尝试过在启动活动时将所选项目的位置传递给意图,然后返回与活动结果相同的位置。然后在适配器中的给定位置修改 Book。希望这行得通。
【解决方案2】:

Internet 上有一些很好的代码示例,但您必须根据自己的目的理解这些代码。所以......这是一个开始,看看Using an ArrayAdapter with ListView。该代码显示了 ArrayAdapter 与 getView() 方法的使用。我希望它展示了如何定义您需要的侦听器。

先这样怎么样?玩得开心...

【讨论】:

    【解决方案3】:

    非常感谢您为我提供的所有帮助。我对你很满意。 :)

    最后,当我启动 Intent 时,我只是将信息与 Bundle 一起发送,也与位置一起发送。之后,我只是使用这个位置为我的物品(在我的情况下,书籍)设置新信息。

    再次,非常感谢您;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-13
      • 2014-10-21
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      相关资源
      最近更新 更多