gpt4 book ai didi

java - 如何修改ListView的ArrayList,但ListView和ArrayList在不同的Activity中

转载 作者:行者123 更新时间:2023-12-02 12:26:38 25 4
gpt4 key购买 nike

我会解释我的问题

我有两堂课:

  • MyListViewClassActivity(实现可序列化,因此可以使用 Intent putExtra 进行解析)
  • 我的其他类(class) Activity

在 MyListViewClassActivityi 中处理 ListView 和名为 alMyData 的初始 ArrayList

MyListViewClassActivity 将 Intent/调用名为 MyOtherClass 的新 Activity ,我将放置额外的 alMyData (我可以告诉您 alMyData 正确解析其中的所有数据)

MyOtherClassActivity 将向 alMyData 添加新数据。

我将关闭 MyOtherClassActivity,以便它再次出现 MyListViewClassActivity。在 MyListViewClassActivity 内部有 onResume 适配器.notifyDataSetChanged。

我的问题:

当 MyListViewClassActivity 内的 onResume 时,数据没有增加,我可以肯定已经在 MyOtherClassActivity 中添加了新数据。

为什么?请给我解释和解决方案。

谢谢。

最佳答案

我认为你并没有真正了解android及其工作原理。您不应该通过额外的方式传递您的数据列表。

看看MVC pattern ,Android 是一种 MVC(不安静,但仍然可以帮助您理解其机制)。

您应该有一个数据模型。然后您的 Activity 将作为 Controller 运行。

您可以查看RecyclerView也。这是在 android 上显示列表的正确方法。此外,如果您使用 Android Studio(我很确定您会这样做),您可以使用默认模型和所有您需要的东西来生成它们。

编辑:我建议你使用那种类

package com.polytech.unice.tobeortohave.compare.dummy;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* Helper class for providing sample content for user interfaces created by
* Android template wizards.
* <p>
* TODO: Replace all uses of this class before publishing your app.
*/
public class DummyContent {

/**
* An array of sample (dummy) items.
*/
public static final List<DummyItem> ITEMS = new ArrayList<>();

/**
* A map of sample (dummy) items, by ID.
*/
public static final Map<String, DummyItem> ITEM_MAP = new HashMap<>();

private static final int COUNT = 25;

static {
// Add some sample items.
for (int i = 1; i <= COUNT; i++) {
addItem(createDummyItem(i));
}
}

private static void addItem(DummyItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.id, item);
}

private static DummyItem createDummyItem(int position) {
return new DummyItem(String.valueOf(position), "Item " + position, makeDetails(position));
}

private static String makeDetails(int position) {
StringBuilder builder = new StringBuilder();
builder.append("Details about Item: ").append(position);
for (int i = 0; i < position; i++) {
builder.append("\nMore details information here.");
}
return builder.toString();
}

/**
* A dummy item representing a piece of content.
*/
public static class DummyItem {
public final String id;
public final String content;
public final String details;

public DummyItem(String id, String content, String details) {
this.id = id;
this.content = content;
this.details = details;
}

@Override
public String toString() {
return content;
}
}
}

这是您的 RecyclerView 或 ListView 的模型。当然,您需要一个自定义适配器来处理这种数据格式。

但是这样您就可以从应用中的任何位置添加或删除列表中的数据。

关于java - 如何修改ListView的ArrayList,但ListView和ArrayList在不同的Activity中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45432818/

25 4 0