您的位置:首页 > 其它

Activity之间传递List类型数据

2014-12-09 16:28 176 查看


在两个activity之间使用intent传递list类型的对象

转载处: http://blog.csdn.net/wy54920my/article/details/8172712
在两个activity之间传递list类型的对象。



第一个界面

[java] view
plaincopyprint?

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;



import org.json.JSONArray;

import org.json.JSONObject;



import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;



public classQueryActivity extends Activity {

private Buttonbutton;

private List<Map<String,Object>>list;

Stringresult="[{\"city\":\"changsha\",\"street\":\"no2\"},{\"city\":\"beijing\",\"street\":\"no5\"}]";

@SuppressWarnings("unchecked")

public void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_query);

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

button.setOnClickListener(new buttonClick());

String result1="{\"address\":"+result+"}";

Log.d("result1",result1);

try{

JSONObject json=new JSONObject(result1);

JSONArray jsonlist=json.getJSONArray("address");

list = new ArrayList<Map<String,Object>>();

list=JsonHelper.toList(jsonlist);

Log.d("list***",list.toString());

}

catch(Exception e){



}

}

classbuttonClickimplements OnClickListener{



@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Intentintent=newIntent(QueryActivity.this,ListViewActivity.class);

intent.putExtra("list", (Serializable)list);

QueryActivity.this.startActivity(intent);

Log.d("list",(Serializable)list+"");



}



}

}



第二个界面

有两个layout文件 创建时候注意listview在创建activity的时候的layout中定义。

例如:ListViewActivity

Java

[java] view
plaincopyprint?

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;



import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.widget.ListView;

import android.widget.SimpleAdapter;



public classListViewActivity extends Activity {





@SuppressWarnings("unchecked")

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_list_view);

Intent intent=getIntent();

List<HashMap<String,String>> mylist = (List<HashMap<String, String>>)intent.getSerializableExtra("list");

ListView list = (ListView)findViewById(R.id.MyListView);

SimpleAdapter mSchedule = new SimpleAdapter(

this, //没什么解释

mylist,//数据来源

R.layout.my_listitem,//ListItem的XML实现

//动态数组与ListItem对应的子项

new String[] {"city","street"},

//ListItem的XML文件里面的两个TextView ID

new int[] {R.id.edit01,R.id.edit02});

//添加并且显示

list.setAdapter(mSchedule);

}

}

其中还会用到一个工具类 将一个jsonArray类型的字符串转换成list—hashmap

Java.class

[java] view
plaincopyprint?

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;



import java.util.*;



@SuppressWarnings({ "rawtypes", "unchecked" })

public classJsonHelper {

public static Object toJSON(Objectobject) throwsJSONException {

if (objectinstanceof Map) {

JSONObject json = new JSONObject();

Map map = (Map) object;

for (Object key : map.keySet()) {

json.put(key.toString(), toJSON(map.get(key)));

}

return json;

} else if (object instanceof Iterable) {

JSONArray json = new JSONArray();

for (Object value : ((Iterable)object)) {

json.put(value);

}

return json;

} else {

return object;

}

}



publicstaticbooleanisEmptyObject(JSONObject object) {

return object.names() ==null;

}



publicstaticMap<String, Object> getMap(JSONObject object, String key)throws JSONException {

returntoMap(object.getJSONObject(key));

}





publicstaticMap<String, Object> toMap(JSONObject object)throws JSONException {



Map<String,Object> map = newHashMap();

Iterator keys = object.keys();

while (keys.hasNext()) {

String key = (String) keys.next();

map.put(key, fromJson(object.get(key)));

}

return map;

}





public static List toList(JSONArrayarray) throwsJSONException {

List list = new ArrayList();

for (int i = 0; i < array.length(); i++) {

list.add(fromJson(array.get(i)));

}

return list;

}



privatestaticObject fromJson(Object json)throws JSONException {

if (json == JSONObject.NULL) {

return null;

} else if (json instanceof JSONObject) {

returntoMap((JSONObject) json);

} else if (json instanceof JSONArray) {

returntoList((JSONArray) json);

} else {

return json;

}

}

}



第一个layout

[html] view
plaincopyprint?

<span style="font-size:18px;">activity_list_view.xml

<?xmlversionxmlversion="1.0"encoding="utf-8"?>

<LinearLayout

android:id="@+id/LinearLayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android">



<ListViewandroid:layout_widthListViewandroid:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/MyListView">

</ListView>

</LinearLayout></span>



第二个layout(自己新建的)

my_listitem.xml

[html] view
plaincopyprint?

<?xmlversionxmlversion="1.0"encoding="utf-8"?>

<LinearLayout

android:layout_width="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_height="wrap_content"

android:id="@+id/MyListItem"

android:paddingBottom="3dip"

android:paddingLeft="10dip">



<EditText

android:layout_height="wrap_content"

android:layout_width="fill_parent"

android:id="@+id/edit01"/>"



<EditText

android:layout_height="wrap_content"

android:layout_width="fill_parent"

android:id="@+id/edit02"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: