2つのactivity間でintentを使用してlistタイプのオブジェクトを渡す
6508 ワード
listタイプのオブジェクトを2つのactivity間で渡します.
最初のインタフェース
2番目のインタフェース
2つのlayoutファイルの作成時にlistviewがactivityを作成するときのlayoutで定義されていることに注意してください.
例:ListView Activity
Java
また、jsonArrayタイプの文字列をlist-hashmapに変換するツールクラスも使用されます.
Java.class
最初のlayout
2番目のlayout(自分で新しく作った)
my_listitem.xml
最初のインタフェース
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
2番目のインタフェース
2つのlayoutファイルの作成時にlistviewがactivityを作成するときのlayoutで定義されていることに注意してください.
例:ListView Activity
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> mylist = (List>)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 getMap(JSONObject object, String key)throws JSONException {
returntoMap(object.getJSONObject(key));
}
publicstaticMap toMap(JSONObject object)throws JSONException {
Map 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
2番目のlayout(自分で新しく作った)
my_listitem.xml
"