安卓开发之Intent传递Object与List教程

 

Intent 不仅可以传单个的值,也可以传对象与数据集合。 传递List<String> 数据集合。

ArrayList<String> info = new ArrayList<String>();
     info.add(name);
     info.add(website);
     info.add(weibo);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
    intent.putStringArrayListExtra("infoList", info);
    startActivity(intent);

接收String 的方法。

ArrayList<String> infoList = new ArrayList<String>();
infoList = getIntent().getStringArrayListExtra("infoList");

传递Object,此Obiect对象需要实现Serializable接口,用Serializable方式传递Object的语法:bundle.putSerializable(key,object);用Serializable方式接收Object的语法:object=(Object) getIntent().getSerializableExtra(key);实现Serializable接口就是把对象序列化,然后再传输,和Java的常用编程没什么明显区别,而且Object不需要明显改变,推荐用这种方式。

下面是Object对象:

public class SerInfo implements Serializable {
 
   private String name;
   private String website;
   private String weibo;
    ............
}

get,set方法自己创建,用Serializable 传递Object:

SerInfo serInfo = new SerInfo(name, website, weibo);
   Intent intent = new Intent();
   Bundle bundle = new Bundle();
   bundle.putSerializable("serinfo", serInfo);
   intent.setClass(MainActivity.this, ResultActivity.class);
   intent.putExtras(bundle);
   startActivity(intent);

用Serializable 接收Object:

SerInfo serInfo = (SerInfo) getIntent().getSerializableExtra(<span class="string">"serinfo"</span>);

这里讲的只是用Serializable这种方式传递数据,当然还有一种方式用Parcelable接口实现。

时间: 2024-10-28 20:48:20

安卓开发之Intent传递Object与List教程的相关文章

安卓开发之SkBitmap的内存管理

  SkBitmap是skia中很重要的一个类,很多画图动作涉及到SkBitmap,它封装了与位图相关的一系列操作,了解它的内存管理策略有助于我们更好的使用它,了解它的初衷是要想实现对skia中的blitter进行硬件加速. 1. SkBitmap的类结构: 开发之SkBitmap的内存管理-安卓开发内存优化"> 2. SkBitmap的内嵌类Allocator Allocator是SkBitmap的内嵌类,其实只有一个成员函数:allocPixelRef(),所以把它理解为一个接口更合适

安卓开发之Scroller.startScroll()方法简介

上篇说到,可以使用scrollBy和scrollTo移动View,这里产生一个问题,加入一个View在屏幕的左上角即(0,0)位置,他调用 scrollTo(-300,-300)时,会立即跳过去,显得很突兀,如何让他平缓地划过去呢?就可以用本篇的方法了. 使用方法: int startX;//滑动动作的起始点x坐标 int startY;//滑动动作的起始点y坐标 int dx;    //x轴偏移量向左为负,向右为正(即负值向右移,正值向左移) int dy;    //y轴偏移量向左为负,向

Android开发之Fragment传递参数的几种方法

Fragment在Android3.0开始提供,并且在兼容包中也提供了Fragment特性的支持.Fragment的推出让我们编写和管理用户界面更快捷更方便了. 但当我们实例化自定义Fragment时,为什么官方推荐Fragment.setArguments(Bundle bundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数呢?为了弄清这个问题,我们可以做一个测试,分别测试下这两种方式的不同 首先,我们来测试下通过构造方法传递参数的情况 public class FramentT

安卓开发之android 拍照和相册选择图片例子

android从选择图片有两种方法,但是返回值确不同,本文将指导大家如何统一这两种方式的返回值. //关键代码  @Event(R.id.btnPhoto)     private void onBtnPhotoClicked(View view) {         Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);         startActivity

安卓开发之Collections.sort方法对list按时间排序

compare(a,b)方法:根据第一个参数小于.等于或大于第二个参数分别返回负整数.零或正整数. equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true. Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序. 一直都没有接触排序,突然要实现对List的排序,找了一下资料

安卓开发之Android帧动画的结束事件

最近在一个Android应用中,用到了帧动画.这东西的具体介绍就不讲了,网上到处是(虽然基本都是抄来抄去--).用起来很简单效果也很好,不过这一次我有一个特殊的要求,希望帧动画在播放完毕的时候做一些其他的事情. 在渐变动画中,我们可以很简单的使用监听器: XXX.setAnimationListener(new AnimationListener() {     @Override     public void onAnimationStart(Animation animation) {  

安卓开发之Picasso框架的使用例子

之前一直使用imageloader这个框架加载图片,觉得配置很麻烦,觉得使用Picasso这个框架. 什么是Picasso我就不多说了,大家可以去官网看,http://square.github.io/picasso/. Picasso使用的方法汇总:  代码如下 复制代码 Picasso.with(context).load("yun_qi_img/DvpvklR.jpg").into(imageView); Picasso.with(context).load(url).into(

安卓开发之ListView(HorizontalListView)横向动态加载数据例子

这个自定义的控件可以实现横向的动态数据加载,话不多说,下面上代码.(使用方法和普通listview一致) 1.在布局里用HorizontalScrollView包含一个ListView: 2.利用GridView,把它的行数设为1行: HorizontalListView.java: package cn.zmit.xianneng.widget; import java.util.LinkedList; import java.util.Queue; import android.conten

Android开发之旅: Intents和Intent Filters(理论部分)

引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离, 并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义!Android应用程序也是一个沙盒,但是他们能够使用Intent. Broadcast Receivers.Adapters.Content Providers.Internet去突破他们的边界互相交流.有交流还会和谐,由此可见这些交流手段有多重要. 上篇文章中我们在 SMS接收程序和使用Int