我想将列表视图中所选项目的数据发送到下一个活动。此数据已从JSON获取。 但它返回的是json的最后一个对象的数据,而不是我正在选择的项目的数据。请帮助我获取从json获取的所选项目的数据,并使用bundle将其传递给下一个活动。
String savedPlaceAddressLine1,savedPlaceAddressLine2,savedPlaceCity,savedPlaceZip,savedPlaceState,savedPlaceCountry,savedPlaceLat,savedPlaceLong;
class JSONAsyncTask extends AsyncTask<String,Void,Boolean>{
@Override
protected Boolean doInBackground(String... params) {
try {
....
JSONObject object2 = jsonArray.getJSONObject(2);
JSONArray jsonArraySavedPlaces = object2.getJSONArray("saved-places");
Log.i("Status2", "GotInnerArray");
for (int j = 0; j < jsonArraySavedPlaces.length(); j++)
{
JSONObject object4 = jsonArraySavedPlaces.getJSONObject(j);
ListItemDataSource listItemDataSource= new ListItemDataSource();
JSONObject addressObject=object4.getJSONObject("address");
Log.i("Status", "GotAddressesArray");
savedPlaceAddressLine1=addressObject.getString("address-line1");Log.i("Status1", savedPlaceAddressLine1);
savedPlaceAddressLine2=addressObject.getString("address-line2");Log.i("Status1", savedPlaceAddressLine2);
savedPlaceCity=addressObject.getString("city");Log.i("Status1", savedPlaceCity);
savedPlaceZip=addressObject.getString("zip");Log.i("Status1", savedPlaceZip);
savedPlaceState=addressObject.getString("state");Log.i("Status1", savedPlaceState);
savedPlaceCountry=addressObject.getString("country");Log.i("Status1", savedPlaceCountry);
savedPlaceTitle=addressObject.getString("address-title");Log.i("Status1", savedPlaceTitle);
savedPlaceLat=addressObject.getString("lattitude");Log.i("Status1", savedPlaceLat);
savedPlaceLong=addressObject.getString("longitude");Log.i("Status1", savedPlaceLong);
String placeAddress=savedPlaceAddressLine1+","+savedPlaceAddressLine2+","+savedPlaceCity+","+savedPlaceState+","+savedPlaceCountry;
listItemDataSource.setPlaceTitle(savedPlaceTitle);Log.i("Status2", "Title");
listItemDataSource.setPlaceAddress(placeAddress);Log.i("Status2", "Address");
itemsList.add(listItemDataSource);
Log.i("info","got data of object"+j);
}
}
return true;
}
... }
在OnCreate中:
Bundle extras=new Bundle();
extras.putString("savedPlacesAddress-title", savedPlaceTitle);
extras.putString("savedPlacesAddress1", savedPlaceAddressLine1);
extras.putString("savedPlacesAddress2", savedPlaceAddressLine2);
extras.putString("savedPlacesCity", savedPlaceCity);
extras.putString("savedPlacesZip", savedPlaceZip);
extras.putString("savedPlacesState", savedPlaceState);
extras.putString("savedPlacesCountry", savedPlaceCountry);
String data=savedPlaceAddressLine1+","+savedPlaceAddressLine2+","+savedPlaceCity+","+savedPlaceZip+","+savedPlaceState+","+savedPlaceCountry;
Log.d("data",data);
intent.putExtras(extras);
startActivity(intent);
答案 0 :(得分:0)
通过setter方法添加AppAddress类中的所有数据,并将其添加到arraylist中。
当您点击列表视图的行时,然后按包传递AppAddress类的对象。
从其他活动接收此对象。
您可以从以下链接下载示例代码: