我想在intent中加上ArrayList<HashMap<String, Object>>类型的值通过broadc传递到activity中。
如下所示,但是提示错误,
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
intent1.putParcelableArrayListExtra("listItem", listItem);错误信息:
The method putParcelableArrayListExtra(String, ArrayList<? extends Parcelable>) in the type Intent is not applicable for the arguments (String, ArrayList<HashMap<String,Object>>)那么,putParcelableArrayListExtra具体是怎么用的呢?通过实现Parcelable接口,能返回ArrayList<HashMap<String, Object>>对象吗?

解决方案 »

  1.   


    private static final String EXTRA_DIRECTORY = "com.blackmoonit.intent.extra.DIRECTORY";void createPlaylist(ArrayList<Uri> aFileList) {    String theDefaultFolderPath = "/sdcard/playlists";     Intent theIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);    theIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,aFileList);    theIntent.setType("audio/*");    theIntent.putExtra(EXTRA_DIRECTORY,theDefaultFolderPath); //optional    try {        startActivity(theIntent);    } catch (Exception e) {        e.printStackTrace();    }}
      

  2.   


    private static final String EXTRA_DIRECTORY = "com.blackmoonit.intent.extra.DIRECTORY";
    void createPlaylist(ArrayList<Uri> aFileList) {    
    String theDefaultFolderPath = "/sdcard/playlists";     
    Intent theIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);    theIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,aFileList);    theIntent.setType("audio/*");    
    theIntent.putExtra(EXTRA_DIRECTORY,theDefaultFolderPath); //optional    
    try {        
    startActivity(theIntent);    
    } catch (Exception e) {    
        e.printStackTrace();  
      }
    }
      

  3.   

    可先将要传递的值放入到HashMap<String, Object>中。然后在用广播发送即可。 
      

  4.   

    不要使用putParcelableAArrayListExtra,使用putExtra方法。所以使用如下代码:
    ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
    intent1.putExtra("listItem", listItem);
    并且使用getSerializableExtra(), 来获取数组列表返回给下一个Activity。