从json获取列表视图中的选定项目数据

时间:2015-03-26 07:26:17

标签: android json listview

我想将列表视图中所选项目的数据发送到下一个活动。此数据已从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);

1 个答案:

答案 0 :(得分:0)

  1. 创建模型类AppAddress。
  2. 为您的属性创建所有setter和getter方法,例如address1,address2,zip code等。
  3. 通过Serializable实现此类。
  4. 使用AppAddress类型创建一个数组列表。
  5. 通过setter方法添加AppAddress类中的所有数据,并将其添加到arraylist中。

  6. 当您点击列表视图的行时,然后按包传递AppAddress类的对象。

  7. 从其他活动接收此对象。

  8. 您可以从以下链接下载示例代码:

    1. http://www.wingnity.com/blog/android-json-parsing-and-image-loading-tutorial/

    2. http://www.androidbegin.com/tutorial/android-json-parse-images-and-texts-tutorial/

    3. http://wptrafficanalyzer.in/blog/android-json-parsing-with-jsonobject-and-loading-to-listview-example/