尝试使用 GSON
改变一下 :)
从这个链接下载 gson.jar
然后将 gson-2.2.2.jar 文件添加到您的项目中。
现在,使用 GSON 将您的 LinkedHashMap 传递给另一个活动
像这样(根据您的需求修改以下代码):
MainActivity:::
public class MainActivity extends Activity {
ObjectClass obj=new ObjectClass();
LinkedHashMap<String, ObjectClass> mLinkedHashMap = new LinkedHashMap<String, ObjectClass>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
obj.id=1;
obj.name="hello";
mLinkedHashMap.put("test", obj);
Gson gson = new Gson();
String list = gson.toJson(mLinkedHashMap);
Intent intent = new Intent(this, secondActivity.class);
intent.putExtra("list", list);
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
secondActivity:::
==>
第二个活动:::
public class secondActivity extends Activity {
LinkedHashMap<String, ObjectClass> mLinkedHashMap = new LinkedHashMap<String, ObjectClass>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String str= getIntent().getStringExtra("list");
Gson gson = new Gson();
Type entityType = new TypeToken< LinkedHashMap<String, ObjectClass>>(){}.getType();
mLinkedHashMap = gson.fromJson(str, entityType);
ObjectClass obj = mLinkedHashMap.get("test");
Log.i("list", ""+obj.id);
}
}
对我有用,希望这能帮助到你。
以下是我的对象类供参考。
public class ObjectClass {
public int id;
public String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
如何添加gson-2.2.2.jar文件。
1)从下载的文件夹“google-gson-2.2.2”中复制gson-2.2.2.jar文件。
2)将它粘贴到你项目的asset文件夹中。
3)现在通过右键单击你的项目>Build Path>Configure Build Path.进入你的项目构建路径设置。
4)这将打开一个对话框,选择java build path,然后转到库标签,
点击下面的"Add Jars..."按钮(如下图所示),它将打开另一个对话框以添加jar文件。选择我们在项目资产文件夹中添加的gson-2.2.2.jar文件(步骤2)。
它将向你的项目添加jar文件(我已经在我的项目中添加了它,如下面的图像所示)
5)现在选择Order and Export标签,然后选择你的gson-2.2.2.jar文件(如下图所示)。
6)按下OK,现在你可以在你的项目中使用GSON
了。
LinkedHashMap
插入/提取到Intent
中时,不能可靠地进行操作,因为Android在将Map
序列化到Intent
的Bundle
中时会将LinkedHashMap
转换为HashMap
。在接收端,你得到的是一个HashMap
,而LinkedHashMap
的顺序已经消失了。你需要将LinkedHashMap
转换为有序数组并将其传递到Intent
中,或者使用另一种序列化/反序列化机制。在我看来,添加GSON库来完成这项工作是过度的,但还有其他更高效的选择。 - David Wasser