如何修改 Android 中的 ListView 项?

How to modify a ListView item in Android?

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

好吧,我制作了一个 ListView,它将显示位于名为 "books" 的 ArrayList 中的一些书籍。

我制作了一个与 ListView 相关联的自定义适配器,以在应用程序中显示具有相应布局的每个项目。对于将要显示在 ListView 中的每个项目,我还有一个 class "book"。

此外,我创建了一个 Intent,我使用 startForActivityResult() 从 MainActivity 调用它,我在 Book class 中处理它,并且我 return 到 MainActivity 并使用方法将一本书的所有数据setResult 并通过 onActivityResult() 和 requestCode 获取信息。

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

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

我和以前一样添加了一个新项目,但是我想知道是否有一些选项可以制作这样的东西,而不是用 custom_adapter.addBook(title,author) 添加新项目: custom_adapter.modify(title,author) 或 custom_adapter.update(title,author),我的意思是,当您修改了书中所有错误的项目时(例如,"title" 的 EditText ) 并且您在 MainActivity class 中拥有所有信息(因为您 return 使用 setResult 对其进行了编辑),如何将其再次放入同一项目中并在 custom_adapter 和ArrayList.

我在互联网上搜索过,但没有找到任何内容。

对不起,如果我的英语不好,但我希望它能被理解。

非常感谢!

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

作为开始,怎么样?玩得开心...

如果我没有正确理解您的问题 - 您可以简单地修改支持您的 ArrayAdapter 的类型 BookArrayList

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

非常感谢您给予我的所有帮助。我对你很满意。 :)

最后,当我启动 Intent 时,我只是用 Bundle 发送信息,还有位置。之后,我只是使用这个位置为我的物品(在我的例子中是书)设置新信息。

再次感谢您;)