1. 程式人生 > >在兩個activity之間使用intent傳遞list型別的物件

在兩個activity之間使用intent傳遞list型別的物件

在兩個activity之間傳遞list型別的物件。

第一個介面

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

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

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

activity_list_view.xml
<?xmlversion="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_width="wrap_content"  
                 android:layout_height="wrap_content"  
                 android:id="@+id/MyListView"> 
        </ListView> 
</LinearLayout>

第二個layout(自己新建的)

my_listitem.xml

<?xmlversion="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"/>
</LinearLayout> 



相關推薦

Activity之間如何傳遞一張圖片

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_target); ByteArrayOu

3. 呼叫另一個Activity,並Activity之間相互傳遞資料

一,在一個Activity中呼叫另一個Activity 利用 android.content.Intent 物件實現從一個Activity跳轉到另一個Activity 例如:從FirstActivity跳轉到SecondActivity /*           關鍵程式碼

activity之間使用intent傳遞list型別物件

在兩個activity之間傳遞list型別的物件。 第一個介面 import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map;

Android Intent傳值(Activity之間傳遞資料)

在兩個Activity之間傳遞資料,最終都是通過Intent傳遞,但設定資料和儲存資料方式有兩種(使用Intent 和 Bundle),分別對應如下: 設定資料(MainActivity.java) 方法一:1.直接用intent.putExtra(“name”,“張三”)

Activity之間的資料傳遞(使用簡單的intent方法)

android程式設計學習中,最近在編寫一個簡單的android專案,實現在TwoActivity(書籍列表)中點選LisView的任意item傳遞書名,給ThreeAvtivity(章節列表),通過接收到的資料(書名)確定顯示書的章節目錄,使用的是intent方法。其中T

Activity之間傳遞List資料

一、List<T>的Bean物件,Bean類實現Serializable介面 public class WordReview implements Serializable {

Activity之間通過Intent相互(雙向)傳遞資料

兩個Activity通過Intent相互交換資料,在Activity中用一個Button 選擇是否接受資料,不能直接寫在onCreate中否則在Activity1 中獲取從Activity2傳送的資料時會崩潰,原因是因為在Activity中會通過Intent再建立一個Act

Android Studio中Activity之間的轉換及資料的傳遞

在建立好兩個Activity之後,分別命名為 MainActivity 和 SecondActivity。 一,Activity之間的切換         在MainActivity中點選Login Button鍵,然後跳轉到SecondActivity,並將資料傳給Ma

Android Activity之間傳遞資料及返回

從Activity1帶引數跳轉到Activity2這個經常用到,比較熟悉,但如何從Activity2將資料返回給Activity1呢?這個其實也不麻煩,動手敲一下就知道了。 Activity1程式碼:public class MainActivity extends A

Activity之間資料的傳遞

MainActivity package com.example.mac.sendargs; import android.content.Intent; import android.supp

Activity之間傳遞資料的全部方法以及Parcelable介面的用法

兩個Activity之間是通過Intent來完成跳轉的: Intent除了完成跳轉Activity之外還可以封裝資料.在這兩個Activity中,如果傳遞單一的資料,直接把資料封裝進Intent即可: 方法一: 直接把資料封裝進Intent即可: Acti

Android中Activity之間簡單通信

idg tin test ide button ima 接收 9.png set 在Android中,一個界面被稱為一個activity,在兩個界面之間通信,采用的是使用一個中間傳話者(即Intent類)的模式,而不是直接通信。 下面演示如何實現兩個activity之間的通

Activity之間重複相互跳轉時遇到的坑

  最近在做的一個應用,主體為兩個Activity,互動時需要來回在兩個Activity之間跳轉,首先Act A先啟動,然後Act A啟動Act B,之後Act B可以通過startActivity

Fragment之間如何傳遞資料

FragmentA啟動FragmentB,做一些選擇操作後,返回FragmentA,需要把FragmentB裡面選擇的資料傳回來。有什麼辦法? Fragment之間不能直接通訊,必須通過Activity來完成,具體步驟。 1. 在FragmentA中定義通訊介面,通過該介面向Activity傳送資料。

【從頭學android】在Activity之間實現介面切換

1.java /** * */ package com.itest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import andro

Android fragment之間資料傳遞

一、在Activity把值傳入fragment中可以直接用fragment中的setArguments。 二、兩個fragment之間的資料傳遞 1、首先需在第一個fragment中獲得FragmentManager和FragmentTransction: Fragmen

activity之間透明過渡效果和經驗

來看下效果圖: 大致效果解釋: 1. 當用戶點選登入時logo下滑一定距離 2. 下滑後旋轉90時 變化圖示 3. 繼續旋轉90度 4. 然後移動到左上角 透明度漸變到上個activity 最後銷燬當前activity

Activity之間用介面回撥進行通訊

因為剛接觸的一個專案是藍芽連線,需求是要在掃描介面點選條目進行連線 時,在跳轉的另一個activity(姑且先叫它連線介面吧)上顯示連線的過程, 也就是彈出一個dialog,所以就需要用介面回撥

dialog之間如何傳遞資料

 CDlg1::OnButton1() { CDlg2 dlg2; dlg2.m_str = _T( "你好 "; ) dlg2.m_bJudge = TRUE; dlg2.DoModal(); } //Dlg2.h public: CString m_str; BOOL

android intent 傳遞list物件 (轉)

當然這些Object是有一定的條件的,前者是實現了Serializable介面,而後者是實現了Parcelable介面 方法四: 用intent傳來傳去 覺得不方便 我們可以寫一個在application裡面的全域性資料  1、建立一個屬於你自己的android.app.Application的子類  2、在