life02

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  197 随笔 :: 3 文章 :: 37 评论 :: 0 Trackbacks
android 中通过 aidl 传递map对象
http://blog.sina.com.cn/s/blog_7a4b93580100um3s.html
    分类: android
思路: aidl传递
-------intent(包含一个bundle对象而bundle中放的是Bundle.putSerializable(String key, Serializable value))--------Serializable value(这里我想放的是一个map对象)-----HashMap(Map<String, ArrayList<Entity>>  String为这个数据集合的一个标记可以通过这个标记获取这个数据集合)---- ArrayList<Entity> (实体的数据集合类)。

杂症:Serializable value
实体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{

  String id;

  String name;

  String age;

    
public String getId() {

        
return id;

    }

    
public void setId(String id) {

        
this.id = id;

    }

    
public String getName() {

        
return name;

    }

    
public void setName(String name) {

        
this.name = name;

    }

    
public String getAge() {

        
return age;

    }

    
public void setAge(String age) {

        
this.age = age;

    }

      

}

 用于传递数据的Activity:

public class MapDemoActivity extends Activity {

    Button button;

    

    @Override

    
public void onCreate(Bundle savedInstanceState) {

        
super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

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

        
final MyMap myMap=new MyMap();

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

        

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

        button.setOnClickListener(
new OnClickListener() {

            

            
public void onClick(View v) {

                
// TODO Auto-generated method stub
                Intent intent=new Intent(MapDemoActivity.this,ReceiveMap.class);

                Bundle bundle
=new Bundle();

                bundle.putSerializable(
"map", myMap);

                intent.putExtras(bundle);

                startActivity(intent);

            }

        });

    }

    

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

        
// TODO Auto-generated method stub
        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++){

                  Entity entity
=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 {

    TextView textView;

    Button  button;

    MyMap myMap;

    
protected void onCreate(Bundle savedInstanceState) {

        
// TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.receive_data);

        

        Bundle bundle
=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(View v) {

                
// TODO Auto-generated method stub
                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(
"map key--"+"path"+i+"---list size is---"+list.size()+"\n");

                }

            }

        });

    }

   

}

posted on 2012-04-06 14:08 life02 阅读(4063) 评论(0)  编辑 收藏 引用 所属分类: Android开发

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理