android 中通过 aidl 传递map对象
16lz
2021-12-04
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 " );
}
}
});
}
}
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 " );
}
}
});
}
}
更多相关文章
- android ONVIF 组播探测在线摄像机
- Android中更新UI的线程:Thread 、Handler、Looper、TimerTask等
- Android(安卓)studio 连接数据库小经历遇到的问题以及解决方法(ja
- Android(安卓)中文 API (102)—— CursorAdapter
- 从零开始学习android
- Android数据的四种存储方式SharedPreferences、SQLite、Content
- Android(安卓)各种布局技术-五大布局对象
- android中SharedPreferences和PreferenceActivity的存取数据
- Android中Message机制的灵活应用