1. 程式人生 > >Android中activity之間如何傳遞Hashmap資料

Android中activity之間如何傳遞Hashmap資料

我的使用場景是當一個頁面需頁面中的listview中的hashmap的資料時要另一個,就要用到了傳遞hashmap資料。
在傳送方,我的程式碼是這樣的:

package cn.oddcloud.www.coffeestore.Test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

import java.util.HashMap;

import
cn.oddcloud.www.coffeestore.R; public class Main2Activity extends AppCompatActivity { HashMap<String,Object> map; Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); button= (Button) findViewById(R.id.button); map=new
HashMap<>();//定義一個map,用來儲存資料 map.put("to","我是分子");//鍵值為to的放的值是;我是分子 // 也分子 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳轉頁面 Intent intent=new Intent(Main2Activity.this
,Main4Activity.class); //讓hashmap實現可序列化則要定義一個實現可序列化的類。 SerMap serMap=new SerMap(); //傳遞map到SerMap 中的map,這樣資料就會傳遞到SerMap 中的map中。 serMap.setMap(map); //建立Bundle物件,存放實現可序列化的SerMap Bundle bundle=new Bundle(); bundle.putSerializable("KEY",serMap); //意圖放置bundle變數 intent.putExtras(bundle); startActivity(intent); } }); } }

自定義類

package cn.oddcloud.www.coffeestore.Test;

import java.io.Serializable;
import java.util.HashMap;

/**
 * Created by Administrator on 2016/5/8.
 */
public class SerMap  implements Serializable {
    public HashMap<String,Object> map;
    public  SerMap(){

    }

    public HashMap<String, Object> getMap() {
        return map;
    }

    public void setMap(HashMap<String, Object> map) {
        this.map = map;

    }
}

接收方:

package cn.oddcloud.www.coffeestore.Test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import java.util.HashMap;

import cn.oddcloud.www.coffeestore.R;

public class Main4Activity extends AppCompatActivity {
   HashMap<String,Object> map;
TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
        textView= (TextView) findViewById(R.id.tess);
        //獲得意圖
        Intent intent=getIntent();
        //得到資料集
        Bundle bundle=intent.getExtras();
        //獲得自定義類
        SerMap serializableMap = (SerMap) bundle
                .get("KEY");
        map=serializableMap.getMap();
        textView.setText(map.get("to").toString()+map.get("too").toString());



    }
}