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

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

博客时间2012-11-12 08:49

在两个activity之间传递list类型的对象。

 

第一个界面

[java]  view plain copy print ?
  1. import java.io.Serializable;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5.    
  6. import org.json.JSONArray;  
  7. import org.json.JSONObject;  
  8.    
  9. import android.os.Bundle;  
  10. import android.app.Activity;  
  11. import android.content.Intent;  
  12. import android.util.Log;  
  13. import android.view.Menu;  
  14. import android.view.View;  
  15. import android.view.View.OnClickListener;  
  16. import android.widget.Button;  
  17.    
  18. public classQueryActivity extends Activity {  
  19.     private Buttonbutton;  
  20.     private List<Map<String,Object>>list;  
  21.     Stringresult="[{\"city\":\"changsha\",\"street\":\"no2\"},{\"city\":\"beijing\",\"street\":\"no5\"}]";  
  22.    @SuppressWarnings("unchecked")  
  23.     public void onCreate(BundlesavedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.activity_query);  
  26.         this.button=(Button)findViewById(R.id.button);  
  27.         button.setOnClickListener(new buttonClick());  
  28.         String result1="{\"address\":"+result+"}";  
  29.         Log.d("result1",result1);  
  30.         try{  
  31.           JSONObject json=new JSONObject(result1);  
  32.           JSONArray jsonlist=json.getJSONArray("address");  
  33.            list = new ArrayList<Map<String,Object>>();  
  34.            list=JsonHelper.toList(jsonlist);  
  35.          Log.d("list***",list.toString());  
  36.          }  
  37.         catch(Exception e){  
  38.              
  39.         }  
  40.    }  
  41.    classbuttonClickimplements OnClickListener{  
  42.    
  43.        @Override  
  44.        public void onClick(View v) {  
  45.            // TODO Auto-generated method stub  
  46.            Intentintent=newIntent(QueryActivity.this,ListViewActivity.class);  
  47.             intent.putExtra("list", (Serializable)list);  
  48.             QueryActivity.this.startActivity(intent);       
  49.              Log.d("list",(Serializable)list+"");  
  50.             
  51.        }  
  52.         
  53. }  
  54. }  
  55.    


第二个界面

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

例如:ListViewActivity

Java

[java]  view plain copy print ?
  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4.    
  5. import android.os.Bundle;  
  6. import android.app.Activity;  
  7. import android.content.Intent;  
  8. import android.view.Menu;  
  9. import android.widget.ListView;  
  10. import android.widget.SimpleAdapter;  
  11.    
  12. public classListViewActivity extends Activity {  
  13.    
  14.    
  15.    @SuppressWarnings("unchecked")  
  16.     @Override  
  17.    publicvoidonCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.activity_list_view);  
  20.         Intent intent=getIntent();  
  21.         List<HashMap<String,String>> mylist = (List<HashMap<String, String>>)intent.getSerializableExtra("list");  
  22.         ListView list = (ListView)findViewById(R.id.MyListView);    
  23. SimpleAdapter mSchedule = new SimpleAdapter(  
  24. this//没什么解释   
  25. mylist,//数据来源   
  26. R.layout.my_listitem,//ListItem的XML实现   
  27. //动态数组与ListItem对应的子项                 
  28.  new String[] {"city","street"},   
  29.  //ListItem的XML文件里面的两个TextView ID   
  30. new int[] {R.id.edit01,R.id.edit02});   
  31.         //添加并且显示   
  32.         list.setAdapter(mSchedule);   
  33.    }  
  34. }  


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

Java.class

[java]  view plain copy print ?
  1. import org.json.JSONArray;  
  2. import org.json.JSONException;  
  3. import org.json.JSONObject;  
  4.    
  5. import java.util.*;  
  6.    
  7. @SuppressWarnings({ "rawtypes""unchecked" })  
  8. public classJsonHelper {  
  9.     public static Object toJSON(Objectobject) throwsJSONException {  
  10.         if (objectinstanceof Map) {  
  11.            JSONObject json = new JSONObject();  
  12.             Map map = (Map) object;  
  13.             for (Object key : map.keySet()) {  
  14.                 json.put(key.toString(), toJSON(map.get(key)));  
  15.             }  
  16.             return json;  
  17.         } else if (object instanceof Iterable) {  
  18.             JSONArray json = new JSONArray();  
  19.             for (Object value : ((Iterable)object)) {  
  20.                 json.put(value);  
  21.             }  
  22.             return json;  
  23.         } else {  
  24.             return object;  
  25.         }  
  26.    }  
  27.    
  28.    publicstaticbooleanisEmptyObject(JSONObject object) {  
  29.         return object.names() ==null;  
  30.    }  
  31.    
  32.    publicstaticMap<String, Object> getMap(JSONObject object, String key)throws JSONException {  
  33.         returntoMap(object.getJSONObject(key));  
  34.    }  
  35.    
  36.      
  37.    publicstaticMap<String, Object> toMap(JSONObject object)throws JSONException {  
  38.          
  39.        Map<String,Object> map = newHashMap();  
  40.         Iterator keys = object.keys();  
  41.         while (keys.hasNext()) {  
  42.             String key = (String) keys.next();  
  43.             map.put(key, fromJson(object.get(key)));  
  44.         }  
  45.         return map;  
  46.    }  
  47.    
  48.      
  49.     public static List toList(JSONArrayarray) throwsJSONException {  
  50.         List list = new ArrayList();  
  51.         for (int i = 0; i < array.length(); i++) {  
  52.             list.add(fromJson(array.get(i)));  
  53.         }  
  54.         return list;  
  55.    }  
  56.    
  57.    privatestaticObject fromJson(Object json)throws JSONException {  
  58.         if (json == JSONObject.NULL) {  
  59.             return null;  
  60.         } else if (json instanceof JSONObject) {  
  61.             returntoMap((JSONObject) json);  
  62.         } else if (json instanceof JSONArray) {  
  63.             returntoList((JSONArray) json);  
  64.         } else {  
  65.             return json;  
  66.         }  
  67.    }  
  68. }  
  69.    


第一个layout

[html]  view plain copy print ?
  1. <span style="font-size:18px;">activity_list_view.xml  
  2. <?xmlversionxmlversion="1.0"encoding="utf-8"?>   
  3. <LinearLayout    
  4.         android:id="@+id/LinearLayout01"    
  5.         android:layout_width="fill_parent"    
  6.         android:layout_height="fill_parent"    
  7.         xmlns:android="http://schemas.android.com/apk/res/android">   
  8.            
  9.         <ListViewandroid:layout_widthListViewandroid:layout_width="wrap_content"    
  10.                  android:layout_height="wrap_content"    
  11.                  android:id="@+id/MyListView">   
  12.         </ListView>   
  13. </LinearLayout></span>  


 

第二个layout(自己新建的)

my_listitem.xml

[html]  view plain copy print ?
  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?>   
  2. <LinearLayout    
  3.         android:layout_width="fill_parent"    
  4.         xmlns:android="http://schemas.android.com/apk/res/android"    
  5.         android:orientation="vertical"   
  6.         android:layout_height="wrap_content"    
  7.         android:id="@+id/MyListItem"    
  8.         android:paddingBottom="3dip"    
  9.         android:paddingLeft="10dip">   
  10.    
  11.         <EditText  
  12.                android:layout_height="wrap_content"    
  13.                android:layout_width="fill_parent"  
  14.                android:id="@+id/edit01"/>"  
  15.       
  16.         <EditText  
  17.                android:layout_height="wrap_content"    
  18.                android:layout_width="fill_parent"  
  19.                android:id="@+id/edit02"/>  
  20. </LinearLayout>   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值