android 中通过 aidl 传递map对象(转载) android中通过aidl传递map对象
http://blog.sina.com.cn/s/blog_7a4b93580100um3s.html
分类:android
思路:aidl传递
------- intent(包含一个bundle对象而bundle中放的是Bundle.putSerializable(Stringkey,Serializablevalue)) -------- Serializablevalue(这里我想放的是一个map对象) ----- HashMap(Map < String,ArrayList < Entity >> String为这个数据集合的一个标记可以通过这个标记获取这个数据集合) ---- ArrayList < Entity > (实体的数据集合类)。

杂症:Serializablevalue
实体Entity实现了序列化接口,依然不可传递。解决办法是将map封装了一下,实现了序列化接口就OK了。

实例:某哥们的demo(用了两个Activity,一个传递数据,另一个接受数据):

封装的map:

public class MyMap implements Serializable{



private Map < String,ArrayList < Entity >> map;



public Map < String,ArrayList < Entity >> getMap(){

return map;

}



public void setMap(Map < String,ArrayList < Entity >> map){

this .map = map;

}



}

实体Entity:

  

public class Entity implements Serializable{

Stringid;

Stringname;

Stringage;

public StringgetId(){

return id;

}

public void setId(Stringid){

this .id = id;

}

public StringgetName(){

return name;

}

public void setName(Stringname){

this .name = name;

}

public StringgetAge(){

return age;

}

public void setAge(Stringage){

this .age = age;

}



}

 用于传递数据的Activity:

public class MapDemoActivity extends Activity{

Buttonbutton;



@Override

public void onCreate(BundlesavedInstanceState){

super .onCreate(savedInstanceState);

setContentView(R.layout.main);



Map
< String,ArrayList < Entity >> map = initData();

final MyMapmyMap = new MyMap();

// 将map数据添加到封装的map中
myMap.setMap(map);



button
= (Button)findViewById(R.id.btn);

button.setOnClickListener(
new OnClickListener(){



public void onClick(Viewv){

// TODOAuto-generatedmethodstub
Intentintent = new Intent(MapDemoActivity. this ,ReceiveMap. class );

Bundlebundle
= new Bundle();

bundle.putSerializable(
" map " ,myMap);

intent.putExtras(bundle);

startActivity(intent);

}

});

}



private Map < String,ArrayList < Entity >> initData(){

// TODOAuto-generatedmethodstub
Map < String,ArrayList < Entity >> map = new HashMap < String,ArrayList < Entity >> ();

for ( int i = 0 ;i < 10 ;i ++ ){

ArrayList
< Entity > list = new ArrayList < Entity > ();

for ( int j = 0 ;j < 10 ;j ++ ){

Entityentity
= new Entity();

entity.setId(
"" + j);

entity.setName(
" name " + j);

entity.setAge(
" age " + j);

list.add(entity);

}

map.put(
" path " + i,list);

}

return map;

}





}

  

用来接受数据的Activity:

public class ReceiveMap extends Activity{

TextViewtextView;

Buttonbutton;

MyMapmyMap;

protected void onCreate(BundlesavedInstanceState){

// TODOAuto-generatedmethodstub
super .onCreate(savedInstanceState);

setContentView(R.layout.receive_data);



Bundlebundle
= getIntent().getExtras();

myMap
= (MyMap)bundle.get( " map " );



textView
= (TextView)findViewById(R.id.tv);

button
= (Button)findViewById(R.id.receive_btn);

button.setOnClickListener(
new OnClickListener(){



public void onClick(Viewv){

// TODOAuto-generatedmethodstub
Map < String,ArrayList < Entity >> map = myMap.getMap();

if (map == null )

return ;

for ( int i = 0 ;i < 10 ;i ++ ){

ArrayList
< Entity > list = map.get( " path " + i);

if (list == null || list.size() == 0 )

continue ;

textView.append(
" mapkey-- " + " path " + i + " ---listsizeis--- " + list.size() + " \n " );

}

}

});

}



}

更多相关文章

  1. android ONVIF 组播探测在线摄像机
  2. Android中更新UI的线程:Thread 、Handler、Looper、TimerTask等
  3. Android(安卓)studio 连接数据库小经历遇到的问题以及解决方法(ja
  4. Android(安卓)中文 API (102)—— CursorAdapter
  5. 从零开始学习android
  6. Android数据的四种存储方式SharedPreferences、SQLite、Content
  7. Android(安卓)各种布局技术-五大布局对象
  8. android中SharedPreferences和PreferenceActivity的存取数据
  9. Android中Message机制的灵活应用

随机推荐

  1. 关于启动Activity动画样式以及问题。
  2. android display架构分析
  3. android performClick
  4. protected-broadcast 规范使用系统应用组
  5. Android 4.0里无法屏蔽HOME键
  6. Android实现界面跳转
  7. Android 定义全局LOG打印日志,并显示调用
  8. android之luncher滑动效果
  9. Android 全屏无标题详解
  10. android 检测应用程序信息