在兩個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、在