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 studio 连接数据库小经历遇到的问题以及解决方法(java.sq
  2. Android数据的四种存储方式SharedPreferences、SQLite、Content
  3. Android 各种布局技术-五大布局对象
  4. android中SharedPreferences和PreferenceActivity的存取数据
  5. android复制数据库到SD卡(网上搜集,未经验证)
  6. Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
  7. Android 数据存储
  8. Android手机客户端与Servlet交换数据

随机推荐

  1. Android中自定义对话框小结
  2. Android RingtoneManager铃声管理
  3. android UI开发之RecyclerView(一)简单实现
  4. Android 修改默认输入法
  5. Android中的getApplication()、getApplic
  6. Android 获取屏幕高宽度,密度,通知栏高度,截
  7. android 动态效果学习之旅
  8. 几个通用的类,迷你型的Android下载框架
  9. Android集成腾讯bugly-tinker热更新使用
  10. Android 的整体布局