java获取数组位置并通过Intent发送它
我正在尝试将数据从对象数组发送到新活动。
我正在使用带有list.setOnItemClickListener
的列表视图
我想做的是将数组数据发送到一个新的活动,该活动是在单击listview中的某个项目时创建的
@Override
public void onDataChange(DataSnapshot snapshot) {
try {
HashMap<String, Object> casos = new HashMap<String, Object>((HashMap<String, Object>) snapshot.getValue());
for (Object caso : casos.values()) {
HashMap<String, Object> casoMap = (HashMap<String, Object>) caso;
DatosCaso nuevosdatos = new DatosCaso((String)casoMap.get("nombre"), (String)casoMap.get("sexo"),(String) casoMap.get("edad"), (String)casoMap.get("color"),(String) casoMap.get("tamanio"), (String)casoMap.get("raza"), (String)casoMap.get("descripcion"), (String)casoMap.get("ubicacion"),(String)casoMap.get("contacto"),(String)casoMap.get("imagen"), (String)casoMap.get("fecha"));
datos.add(nuevosdatos);
}
} catch (Exception e) {
Log.d("NUEVOCASO", e + "");
}
// thread executing here can get info from database and make subsequent call
Collections.addAll(datos);
ponerCasoEnListview(datos); //this puts the array into a listView
}
这就是我在数组中填充数据的方式
然后我使用了这个,但我不知道如何发送数组
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Intent intent = new Intent(CasosPerdidosActivity.this, CasoActivity.class);
startActivity(intent);
}
});
我应该放额外的(Arraylist)或类似的东西吗
# 1 楼答案
putParcelableArrayListExtra()
或将列表转换为JSONString
# 2 楼答案
要通过
Intent
发送数据对象,请使用Bundle
并尝试使用Gson
库。通过Gson将这些对象打包到JSONString中,并在新活动中解压(在您的案例中CasoActivity
)要更熟悉Gson库,请转到https://sites.google.com/site/gson/gson-user-guide