`

android中使用putSerializable()方法的妙处

 
阅读更多
前段时间做项目时无意中乱用了putSerializable这个方法,结果达到了目的,这令我很惊讶,当时以为是这个方法有超越其他方法的奇效,当时的代码是这样写的:
这个是下一个页面的UpdateActivity中的查询方法:

     //findAll
public ArrayList<HashMap<String, Object>> findAll(){
//查询所有
Cursor c;
    c = db.rawQuery("select g.ID,g.GoodsID,g.GoodsName,g.SellerID,g.Price,g.Specification,g.Unit,s.ID,s.SellerExtraName from T_Goods as g inner join T_Seller as s on g.SellerID = s.ID", null);
TGoods gods=new TGoods();
ArrayList<HashMap<String, Object>> arrayList=new ArrayList<HashMap<String,Object>>();
while(c.moveToNext()){
HashMap<String,Object> map=new HashMap<String, Object>();
map.put("ID", c.getInt(c.getColumnIndex("ID")));
map.put("GoodsID", c.getString(c.getColumnIndex("GoodsID")));
map.put("GoodsName", c.getString(c.getColumnIndex("GoodsName")));
map.put("SellerExtraName", c.getString(c.getColumnIndex("SellerExtraName")));
map.put("Price", c.getFloat(c.getColumnIndex("Price")));
map.put("Specification", c.getString(c.getColumnIndex("Specification")));
map.put("Unit", c.getString(c.getColumnIndex("Unit")));
arrayList.add(map);
}
Bundle bundle=new Bundle();
bundle.putSerializable("arrayList", arrayList);
Intent intent=new Intent();
intent.setClass(UpdateActivity.this, SelTGoodsActivity.class);
startActivity(intent);
return arrayList;
}

这个是上一个SelActivity的查询页面的代码:

   //查询所有
Cursor c;
    c = db.rawQuery("select g.ID,g.GoodsID,g.GoodsName,g.Price,g.Specification,g.Unit,s.SellerExtraName from T_Goods as g inner join T_Seller as s on s.ID = g.SellerID", null);
ArrayList<HashMap<String, Object>> arrayList=new ArrayList<HashMap<String,Object>>();
while(c.moveToNext()){
HashMap<String,Object> map=new HashMap<String, Object>();
map.put("ID", c.getInt(c.getColumnIndex("ID")));
map.put("GoodsID", c.getString(c.getColumnIndex("GoodsID")));
map.put("GoodsName", c.getString(c.getColumnIndex("GoodsName")));
map.put("SellerExtraName", c.getString(c.getColumnIndex("SellerExtraName")));
map.put("Price", c.getString(c.getColumnIndex("Price")));
map.put("Specification", c.getString(c.getColumnIndex("Specification")));
map.put("Unit", c.getString(c.getColumnIndex("Unit")));
arrayList.add(map);
}
SimpleAdapter adapter=new SimpleAdapter(
this,
arrayList,
R.layout.selectlist,
new String[]{"GoodsID","GoodsName","SellerExtraName","Price","Specification","Unit"},
new int[]{R.id.goodsId,R.id.goodsName,R.id.prodctorName,R.id.price,R.id.guige,R.id.danwei});
selList.setAdapter(adapter);



    从这些代码中可以看出,虽然我在UpdateActivity中写了bundle.putSerializable("arrayList", arrayList);但是在SelActivity中我并没有写什么接收的getXXX()方法,但我的目的还是达到了,当时以为是putSerializable("arrayList", arrayList);这个方法有什么奇效,因为干项目进度就没有多看为什么,方才才发现原来是那个被意图传过来的arrayList在起作用,事实上是我们只需要在传递数据的Activity中把要传递的数据添加到这个方法中,都不要putExtras()就可以把数据传递到接收的Activity中,最重要的是前后那两个Activity中的“arrayList”必须是equals的,否则就不行,原理是这样的,UpdateActivity中的arrayList被传到SelActivity中时会自动的找有没有与它同样的变量,有的话就把值赋给那个变量,这样就传递了数据,我这里传递的是一个集合,而且里面还是map,其实也可以放对象等等。
分享到:
评论

相关推荐

    Android中Intent传递对象的两种方法(Serializable,Parcelable)

    Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable...

    android中intent传递list或者对象的方法

    以上就是在Android中使用Intent传递List或对象的几种常见方法。选择哪种方法取决于你的需求,对于基本类型列表,直接使用Intent的方法;对于自定义对象,根据性能需求选择Serializable或Parcelable;如果需要全局...

    Bundle--Android-Activity.rar_android_android activity

    在Android中,Bundle主要用作Intent的附加数据,允许开发者在不同组件间(如Activity、Service等)传递复杂的数据结构。下面我们将详细介绍如何使用Bundle进行数据传递。 1. 创建Bundle对象:首先,你需要创建一个...

    android bundle message

    标题“android bundle message”暗示我们将探讨如何在Android应用中使用Bundle来传递消息和数据。在这个源码中,我们可以期待看到如何创建、添加键值对以及如何在接收端提取这些数据。 首先,让我们理解什么是...

    Android系列之Intent传递对象的几种实例方法

    Intent传递对象是Android开发中的常见需求,通常有两种主要的方法:使用`Bundle.putSerializable()`和`Bundle.putParcelable()`。这两种方法都需要传递的Object对象满足特定的条件。 1. **Serializable接口**: ...

    Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法

    Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key, Object);其中前面一种方法中的Object要实现Serializable接口,后面一种方法中...

    Android 之Activity之间的跳转

    本篇将深入探讨Android中Activity之间的跳转机制以及如何进行数据交换。 首先,Activity的跳转主要通过Intent对象来实现。Intent在Android中充当了组件间通信的信使,它包含了启动另一个Activity所需的信息。创建...

    Android Intent传递泛型类

    2. 在发送Intent时,使用`putSerializable()`方法: ```java MyGenericType&lt;T&gt; myObject = ...; Intent intent = new Intent(this, TargetActivity.class); intent.putExtra("myKey", myObject); startActivity...

    两个Activity之间传递参数的代码

    首先,我们要了解在Android中,有两种主要的方式来传递数据: 1. 使用Intent传递简单数据 2. 使用Bundle传递复杂数据 **一、使用Intent传递简单数据** Intent是Android中用来启动Activity或Service的类,也可以...

    Android 通过Intent使用Bundle传递对象详细介绍

    本文将详细讲解如何通过Intent使用Bundle在Android中传递对象。 首先,我们需要知道在Android中,如果想要通过Intent传递一个对象,这个对象必须是可序列化的。在Java中,有两种基本的序列化方式:`java.io....

    Android Intent多种传值方式

    在Android应用开发中,Intent是一种非常关键的组件,它用于在不同的组件之间传递消息和数据。Intent不仅可以启动或启动服务,还可以实现Activity之间的数据传递。本文将深入探讨Android Intent的多种传值方式。 1. ...

    Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍

    今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是...

    Intent_Bundle_传参数

    在Android应用开发中,...总结,Intent结合Bundle是Android中传递复杂数据的有效手段。理解并熟练运用Bundle的存储和获取机制,能帮助开发者更好地实现Activity间的通信,同时遵循最佳实践,确保应用的稳定性和性能。

    Android intent之间复杂参数传递方法详解

    除了这两种方法,还有一些其他策略可以考虑,例如使用Gson库将对象转换为JSON字符串,然后在Intent中传递,之后再反序列化回对象。这种方法适用于传递复杂对象,但可能会增加应用程序的依赖。 总的来说,Android ...

    Activity传递数据

    总结,Activity间数据传递是Android开发中常见的操作,理解并熟练掌握Intent传参、Bundle传参以及静态变量的使用方法,能有效提升开发效率。不过,应当注意,静态变量的使用应谨慎,尽量避免造成不必要的副作用。在...

    Activity之间的数据传递

    本篇文章将详细探讨如何在Android中通过Intent进行Activity之间的数据传递,以及使用Parcelable和Serializable这两种序列化方式来传递复杂的数据对象。 首先,Intent是Android系统中用于启动组件(如Activity、...

    Android应用源码之Bundle.zip

    在Android中,如果要将复杂对象(如自定义类实例)放入`Bundle`,对象需要实现`Parcelable`接口。`Parcelable`是Android平台提供的一种高效的数据序列化方式,它比`Serializable`更快,更适合用于内存和Intent传输。...

    Android 不同Activity间数据的传递 Bundle对象的应用

    总的来说,Android中不同Activity间的数据传递主要是通过Intent和Bundle进行的,可以传递基本类型的数据以及实现了`Parcelable`或`Serializable`接口的对象。选择哪种方式取决于数据的复杂性和性能需求。`Parcelable...

    activity生命周期保存数据

    总之,`onSaveInstanceState()`是Android中用于保存Activity临时状态的重要工具,合理使用它可以提高用户体验,避免用户在意外情况下丢失数据。但同时,开发者也需要理解其局限性,并结合其他持久化存储手段来确保...

Global site tag (gtag.js) - Google Analytics