【问题标题】:Send SimpleAdapter or ArrayList<Object> with Intent发送带有 Intent 的 SimpleAdapter 或 ArrayList<Object>
【发布时间】:2014-12-06 15:40:28
【问题描述】:

我有这样的代码。这是源类的第一个类。

List<HashMap<String, Object>> sonucList = new ArrayList<HashMap<String,Object>>();

HashMap<String, Object> searchHM = new HashMap<String, Object>();
searchHM.put("Name", eslenenName);
searchHM.put("image", R.drawable.appicon);
sonucList.add(searchHM);

String[] from = { "Name","image"};
int[] to = { R.id.name,R.id.imageView1};

SimpleAdapter adapterSearch = new SimpleAdapter(getBaseContext(), sonucList, R.layout.list, from, to);

代码是这样的。我正在创建一个 HashMap,将一些值更多地放在我的原始代码中。我将这些哈希图添加到 ArrayList 使用 for 循环并使用此列表创建一个 SimpleAdapter。

我要做的是,将此 ArrayList 或 SimpleAdapter 发送到一个新类。我想在另一个页面中用这个适配器创建一个相同的列表视图。我尝试使用 intent.putExtra() 但 putExtra 不接受它所说的 Object 。

我能做什么?谢谢。

【问题讨论】:

  • 不确定,但intent.putExtra() 不需要Serializable?在这种情况下,制作 SimpleAdapter implements Serializable 可能已经有所帮助。
  • 当我尝试发送 HashMap 时,Serializable 可以帮助我。但是我有超过 1 个 HashMap,所以发送 HashMap 不是解决方案。

标签: java android android-intent arraylist simpleadapter


【解决方案1】:

编译器知道HaspMapSerializable,因为您通过其特定类型引用Collection。但它不知道您的ListSerializable,因为您通过它的特定类型引用此Collection。有三种可能。

  1. 使用演员表,使用intent.putExtra((Serializable) sonucList);
  2. 使用特定的类,声明如下:ArrayList&lt;HashMap&lt;String, Object&gt;&gt; sonucList = ...;
  3. 创建一个同时实现ListSerializable 的类型参数,即&lt;SerializableList extends List &amp; Serializable&gt;,并使用SerialiableList 而不是List

顺便说一句,如果您使用的是 Android,您可能希望在代码中的许多地方将 Object 替换为 Serializable,以避免在编译时使用 NotSerializableException,而不是在运行时获取它们。

【讨论】:

  • 非常感谢。第一种可能性奏效了。再次感谢你。你救了我。
  • 这三个解决方案都有效。我应该补充一点,第一个解决方案是最糟糕的。从 Java 1.5 开始,Java 代码几乎不应该包含强制转换。尽管演员表看起来很安全,但如果可能的话,最好将您的 List 声明为 ArrayList - 在这种情况下。
【解决方案2】:

适用于所有类的棘手解决方法

使用单例存储你要传递的对象

检索目标类中存储的对象

【讨论】:

  • 我从未使用过 Singleton,我不知道它是如何工作的,但我会尝试一下。谢谢。
  • 不确定你是否真的想使用单例。 riedquat.de/prog/singletonsAreEvil
  • 正式方法:对要传递的对象使用Serializable接口
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2013-09-04
  • 2021-07-11
相关资源
最近更新 更多