从JSON获取所选项目的数据列表视图中获取 [英] get selected item's data in listview fetched from json

查看:192
本文介绍了从JSON获取所选项目的数据列表视图中获取的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想给所选项目的数据在ListView下activity.This数据已经从JSON获取。
但它返回JSON的最后一个对象的数据,而不是该项目的我很selecting.Please帮助我获得所选项目的数据被取出从JSON和使用束把它传给下一个活动。

 字符串savedPlaceAddressLine1,savedPlaceAddressLine2,savedPlaceCity,savedPlaceZip,savedPlaceState,savedPlaceCountry,savedPlaceLat,savedPlaceLong; 类JSONAsyncTask扩展的AsyncTask<弦乐,太虚,布尔> {
    @覆盖
    保护布尔doInBackground(字符串... PARAMS){
        尝试{
....的JSONObject Object2的= jsonArray.getJSONObject(2);
                        JSONArray jsonArraySavedPlaces = object2.getJSONArray(拯救-地方);
                            Log.i(状态2,GotInnerArray);
                            对于(INT J = 0; J< jsonArraySavedPlaces.length(); J ++)
                            {                                JSONObject的object4 = jsonArraySavedPlaces.getJSONObject(J);                                ListItemDataSource listItemDataSource =新ListItemDataSource();                                JSONObject的addressObject = object4.getJSONObject(地址);
                                Log.i(状态,GotAddressesArray);                                savedPlaceAddressLine1 = addressObject.getString(地址行1); Log.i(状态1,savedPlaceAddressLine1);
                                savedPlaceAddressLine2 = addressObject.getString(地址2号线); Log.i(状态1,savedPlaceAddressLine2);
                                savedPlaceCity = addressObject.getString(城市); Log.i(状态1,savedPlaceCity);
                                savedPlaceZip = addressObject.getString(拉链); Log.i(状态1,savedPlaceZip);
                                savedPlaceState = addressObject.getString(国家); Log.i(状态1,savedPlaceState);
                                savedPlaceCountry = addressObject.getString(国家); Log.i(状态1,savedPlaceCountry);
                                savedPlaceTitle = addressObject.getString(地址标题); Log.i(状态1,savedPlaceTitle);
                                savedPlaceLat = addressObject.getString(lattitude); Log.i(状态1,savedPlaceLat);
                                savedPlaceLong = addressObject.getString(经度); Log.i(状态1,savedPlaceLong);                                串placeAddress=savedPlaceAddressLine1+\",\"+savedPlaceAddressLine2+\",\"+savedPlaceCity+\",\"+savedPlaceState+\",\"+savedPlaceCountry;
                                listItemDataSource.setPlaceTitle(savedPlaceTitle); Log.i(状态2,标题);
                                listItemDataSource.setPlaceAddress(placeAddress); Log.i(状态2,地址);                                itemsList.add(listItemDataSource);
                                Log.i(信息,有对象的数据+ J);
                            }
                }
                返回true;        }

...
}

在OnCreate中:

 捆绑额外=新包();                                                extras.putString(savedPlacesAddress标题,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);                                        串data=savedPlaceAddressLine1+\",\"+savedPlaceAddressLine2+\",\"+savedPlaceCity+\",\"+savedPlaceZip+\",\"+savedPlaceState+\",\"+savedPlaceCountry;
                                        Log.d(数据,数据);
                                        intent.putExtras(临时演员);                                        startActivity(意向);


解决方案

  1. 创建模型类AppAddress。

  2. 创建你的财产一样地址1,地址,邮编code等所有的setter和getter方法​​。

  3. 通过序列化实现这个类。

  4. 创建与AppAddress类型数组列表。

  5. 在您的AppAddress类添加的所有数据通过setter方法​​,并将其添加到ArrayList中。


  6. 当你点击列表视图排再由包传递AppAddress类的对象。


  7. 接收来自其他活动这个对象。


您可以从下面的链接下载示例code:


  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/

I want to send the data of selected item in a listview to the next activity.This data has been fetched from JSON. But it is returning last object's data of json and not that of the item i am selecting.Please help me to get the data of selected item that is fetched from json and pass it on to next activity using 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;

        }

... }

in 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. Create a model class AppAddress.
  2. Create all setter and getter method for your property like address1, address2, zip code etc.
  3. implement this class by Serializable.
  4. Create a Array list with AppAddress type.
  5. Add all data in your AppAddress class by setter method and add it into arraylist.

  6. When you will click on row of listview then pass object of AppAddress class by bundle.

  7. Receive this object from other activity.

You can download sample code from below link:

  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/

这篇关于从JSON获取所选项目的数据列表视图中获取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆