【问题标题】:How to modified an ArrayList for ListView but ListView and ArrayList in different Activity如何在不同的活动中修改 ListView 的 ArrayList 但 ListView 和 ArrayList
【发布时间】:2017-08-01 08:34:43
【问题描述】:

我会解释我的问题

我有 2 节课:

  • MyListViewClassActivity(实现 Serializable,因此可以使用意图 putExtra 进行解析)
  • MyOtherClassActivity

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

而 MyListViewClassActivity 将意图/称为名为 MyOtherClass 的新活动,我将放置Extra alMyData(我可以告诉你 alMyData 正确解析其中的所有数据)

MyOtherClassActivity 将向 alMyData 添加新数据。

我将关闭 MyOtherClassActivity,以便它再次出现 MyListViewClassActivity。 MyListViewClassActivity 里面有 onResume 那adapter.notifyDataSetChanged。

我的问题:

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

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

谢谢。

【问题讨论】:

标签: java android listview arraylist


【解决方案1】:

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

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

您应该有一个数据模型。然后您的活动将作为控制器。

您也可以查看RecyclerView。这是在 androdi 上显示列表的正确方法。此外,如果您使用 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 的模型。当然,您需要一个自定义的 Addapter 来处理这种数据格式。

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

【讨论】:

  • 我可以在不使用意图的情况下将 ArrayList 从 A 活动传递到 B 活动吗?
  • 顺便说一下我的 ArrayList 是 ArrayList myList = new ArrayList();
  • 是的,从技术上讲,您可以这样做,但这意味着您必须序列化数据以进行反序列化(即使您使用 Parcebable 而不是 Serializable 数据),您将使用比您应该使用的更多资源。我的意思是,你想要实现的并不是最好的做事方式。
  • 当我使用 Serializable 时,它​​看起来像值而不是引用。是否使用 Parcealable 成为引用?
  • 我不确定,但我不这么认为。如果我没记错的话,区别主要在于表演。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
相关资源
最近更新 更多