I'm trying to create a list of "events" for an agenda.
To do this, I recieve a JSON response which contains several month objects, which in turn contain an array of event-objects.
When I receive my response, all months are ordered, as shown below:
{
"Agenda/Future": {
"November 2011/0": [
{
"id": "5710",
"eventid": "",
"name": "test7",
"startdate": "nov 9",
"datecompute": "2011-11-09T12:00:00",
"group_month": "November 2011",
"flg_Data": "Database"
},
{
"id": "5707",
"eventid": "",
"name": "test4",
"startdate": "nov 17",
"datecompute": "2011-11-17T12:00:00",
"group_month": "November 2011",
"flg_Data": "Database"
},
{
"id": "5704",
"eventid": "",
"name": "test",
"startdate": "nov 30",
"datecompute": "2011-11-30T12:00:00",
"group_month": "November 2011",
"flg_Data": "Database"
}
],
"December 2011/1": [
{
"id": "5705",
"eventid": "",
"name": "test2",
"startdate": "dec 28",
"datecompute": "2011-12-28T12:00:00",
"group_month": "December 2011",
"flg_Data": "Database"
}
],
"November 2013/2": [
{
"id": "5706",
"eventid": "",
"name": "test3",
"startdate": "nov 1",
"datecompute": "2013-11-01T12:00:00",
"group_month": "November 2013",
"flg_Data": "Database"
},
{
"id": "5708",
"eventid": "",
"name": "test5",
"startdate": "nov 15",
"datecompute": "2013-11-15T12:00:00",
"group_month": "November 2013",
"flg_Data": "Database"
},
{
"id": "5709",
"eventid": "",
"name": "test6",
"startdate": "nov 15",
"datecompute": "2013-11-15T12:00:00",
"group_month": "November 2013",
"flg_Data": "Database"
}
]
}
}
First there is November 2011, then December 2011, and finally November 2013.
However after parsing this response, the order has changed to November 2011, November 2013, December 2011.
Like so:
Obviously, this can cause quite some confusion.
My theory is that due to the use of JSONArray eventNames = agenda.names();, which gets the names of the month objects, the order changes to one based on the actual month, not the year. This has been confirmed after adding another event in March 2022, and this event ends up first.
I checked through my code, and nowhere can I find any sort of function that would change the ordering, making the names(); the most probably culprit.
My question is, how can I make sure the objects in my initial JSONArray get ordered by the month + year, rather then just the month. Removing the names() method is not an option, considering the fact that the objectnames for the months are dynamic (based on month+year). I also would rather not change to a different parsing system (GSON, Jackson), since this is the only one that has been succesfull at parsing my reponse (see previous asked questions).
Eventually managed to fix it by looping over an array containing the full names, and then checking whether that name contained any of the parts from the ordered list (the one containing the years + id). If the string contains that part, add it to a new array on the position of the year+id it contained. Code can be found below
String[] test = new String[eventNames.length()];
String[] test2;
for (int x = 0; x < eventNames.length(); x++){
//System.out.println(eventNames.get(x).toString());
String[] xx = eventNames.get(x).toString().split(" ");
test[x] = xx[1];
}
Arrays.sort(test);
String[] test3 = new String[eventNames.length()];
for(int q = 0; q < eventNames.length(); q++){
String str = eventNames.get(q).toString();
for(int p = 0; p < test.length; p++){
if(str.contains(test[p])){
test3[p] = str;
}
}
}
System.out.println(test.toString());
for (int x = 0; x < eventNames.length(); x++){
System.out.println("maand :"+x+" "+test3[x]);
}
I woudl speculate that JSON Object is backed with map, and names does merely Map.keys() - order of keys is undefined. At leas API spec says nothing about any sorting / ordering of individual fields - so you will have to order those entries yourself - defining comparator based on split(" ") is not that difficult
Related
Please help me for parsing this json Array response.
This is response json response.
The problem is split "tag_id",tag_name
{
"tag": "allcompanyprofiles",
"success": 1,
"error": 0,
"searchresult": [{
"id": "146",
"name": "SJB Bookkeeping and Accounting",
"slug": "sjb-bookkeeping-and-accounting",
"contact_name": "Bernard Newman",
"category_id": "7",
"description": "hello",
"lon": "-79.787231600000",
"lat": "43.360581400000",
"address": "3425 Harvester unit 206",
"city": "Burlington",
"state": "Ontario",
"postcode": "L7N 3M7",
"country": "CA",
"phone": "905-335-0081",
"email": "sjb#sjbbookkeeping.com",
"time_frame": "Morning,Afternoon,All Day",
"onsite_requirements": "WHIMIS TRAINING",
"position": "Accounting, Administration",
"oyap": "No",
"shsm": "Yes",
"summer": "Yes",
"virtual": "No",
"website": "sjbbookkeeping.com\/",
"user_id": "1",
"title": "Finance\/Accounting",
"dlc_slug": "financeaccounting",
"tag_id": ["47", "79"],
"tag_name": ["administration", "accounting"]
}, {
"id": "145",
"name": "Length Hair Bar",
"slug": "length-hair-bar",
"contact_name": "Amalea",
"category_id": "29",
"description": "hello",
"lon": "-79.394569700000",
"lat": "43.675291300000",
"address": "162A Davenport Road",
"city": "Toronto",
"state": "Ontario",
"postcode": "M5R 1J2",
"country": "CA",
"phone": "416-823-3755",
"email": "lengthhairbar#yahoo.com",
"time_frame": "Morning,Afternoon,All Day",
"onsite_requirements": "WHIMIS TRAINING",
"position": "Hair Stylist Assistant, Customer Service",
"oyap": "Yes",
"shsm": "Yes",
"summer": "Yes",
"virtual": "No",
"website": "",
"user_id": "1",
"title": "Esthetics",
"dlc_slug": "esthetics",
"tag_id": ["178", "177", "179"],
"tag_name": ["stylist", "hair", "esthetics"]
}
]
}
This is my android code.
JSONObject jobjsearch=new JSONObject(strjson);
tag_list=jobjsearch.getString("tag");
success_list=jobjsearch.getString("success");
error_list=jobjsearch.getString("error");
// Total Result Counted
total_count = jobjsearch.getString("totalcount");
Log.v("TagSearch",tag_list);
Log.v("SuccessSearch",success_list);
Log.v("ErrorSearch",error_list);
//JsonArray Working
JSONArray jarr_list =jobjsearch.getJSONArray("searchresult");
for (int i=0; i<jarr_list.length(); i++) {
JSONObject obbj=jarr_list.getJSONObject(i);
/////////////////////////// Tagsid
tagsid_default=obbj.getString("tag_id");
arrtagsid_list.add(tagsid_default);
String CurrentString = "Fruit: they taste good";
String[] separated = CurrentString.split(":");
//Tagsname
tagsname_default=obbj.getString("tag_name");
arrtagsname_list.add(tagsname_default);
/////////////////////////////////
wesite_default=obbj.getString("website");
arrweb_list.add(wesite_default);
email_default=obbj.getString("email");
name_list = obbj.getString("name");
arrname_list.add(name_list);
Log.v("Companyname",name_list);
// allNames.add(name);
address_list = obbj.getString("address");
arraddress_list.add(address_list);
Log.v("Companyaddress",address_list);
city_list = obbj.getString("city");
arrcity_list.add(city_list);
Log.v("Companycity",city_list);
state_list = obbj.getString("state");
arrstate_list.add(state_list);
Log.v("Companystate",state_list);
country_list = obbj.getString("country");
arrcountry_list.add(country_list);
Log.v("Companycountry",country_list);
//categorytitle
categoryid_list=obbj.getString("title");
arrcategoryid_list.add(categoryid_list);
Log.v("category",categoryid_list);
//title_list=obbj.getString("title");
//arrtitle_list.add(title_list);
intro_list=obbj.getString("intro");
arrintro_list.add(intro_list);
///categoryid
str_categoryid=obbj.getString("category_id");
arrcategryid_list.add(str_categoryid);
//get id in integer variable
//pos=obbj.getInt("id");
//arrid_list.add(pos);
//get id in string variable
str_pos=obbj.getString("id");
arrayid_list.add(str_pos);
Log.e("DefaultPosition"+pos,"");
//setset.setId(obbj.getString("id"));
//setset.setName(obbj.getString("name"));
}
Those are JSONArray's. Treat them as a JSONArray.
Change
tagsid_default=obbj.getString("tag_id");
arrtagsid_list.add(tagsid_default);
to
JSONArray tempId = obbj.getJSONArray("tag_id");
for(int i = 0; i< tempId.length(); i++)
{
arrtagsid_list.add(tempId.get(i).toString());
}
And
Change
tagsname_default=obbj.getString("tag_name");
arrtagsname_list.add(tagsname_default);
to
JSONArray tempName = obbj.getJSONArray("tag_name");
for(int i = 0; i< tempName.length(); i++)
{
arrtagsname_list.add(tempName.get(i).toString());
}
Note: I strongly feel you should read about JSON fist before trying to parse it, so that you don't make mistakes like this. Here are basics of JSON
My requirement is simple, i have a JSON file in webserver and i have to parse it in android and i know the parsing method, but i have to display the output by different way in the following JSON file,
{
"Productcategory": [
{
"shop_cat_id": "1",
"shop_cat_name": "kurtis",
"shop_scat_id1": "1",
"shop_scat_id1name": "cotton kurtis",
"shop_scat_id2": "2",
"shop_scat_id2name": "Cotton Designer Kurtis",
"shop_scat_id3": "3",
"shop_scat_id3name": "soft Designer kurtis"
},
{
"shop_cat_id": "2",
"shop_cat_name": "Sarees",
"shop_scat_id1": "1",
"shop_scat_id1name": "Saree 1",
"shop_scat_id2": "2",
"shop_scat_id2name": "Saree 2",
"shop_scat_id3": "3",
"shop_scat_id3name": "Saree 3",
"shop_scat_id4": "4",
"shop_scat_id3name": "Saree 4"
},
{
"shop_cat_id": "3",
"shop_cat_name": "Anarkkali suits",
"shop_scat_id1": "1",
"shop_scat_id1name": "Readymade",
"shop_scat_id2": "2",
"shop_scat_id2name": "Stitched",
"shop_scat_id3": "3",
"shop_scat_id3name": "Unstitched"
},
{
"shop_cat_id": "4",
"shop_cat_name": "CottonLeggins",
"shop_scat_id1": "1",
"shop_scat_id1name": "LSize",
"shop_scat_id2": "2",
"shop_scat_id2name": "XLsize",
"shop_scat_id3": "3",
"shop_scat_id3name": "3XLsize",
"shop_scat_id4": "4"
},
{
"shop_cat_id": "5",
"shop_cat_name": "PattialaPantsset",
"shop_scat_id1": "1",
"shop_scat_id1name": "LSize",
"shop_scat_id2": "2",
"shop_scat_id2name": "XLsize",
"shop_scat_id3": "3",
"shop_scat_id3name": "3XLsize",
"shop_scat_id4": "4"
},
{
"shop_cat_id": "6",
"shop_cat_name": "Kids'AnarkkaliSuits",
"shop_scat_id1": "1",
"shop_scat_id1name": "LSize",
"shop_scat_id2": "2",
"shop_scat_id2name": "XLsize",
"shop_scat_id3": "3",
"shop_scat_id3name": "3XLsize",
"shop_scat_id4": "4"
}
]
}
I fetched the "shop_cat_name" field in a separate ListView and it looks like below,
I need to display the subcategory in separate ListView for each Category Clicked.
But when i parse the "shop_scat_id1name" field, the data fetching in all the array fields with different category name like below image,
My required output should be like below when i click the first category and similarly for other category based on their subcategory..
Category name i click
Kurtis
Subcategory should be
Cotton kurtis
Cotton Designer Kurtis
Soft Designer Kurtis
By what way i have to modify the JSON structure or anything i need to do in coding part?
Help Needed..
I guess you get the vaule from JSON like this : String name=JSON.getString("shop_scat_id1name");
It's wrong.
Wait a minute,I'll give you some examples.
My English is very poor.Very sorry.
First
you should create a entity like this that will stored value.
public class Productcategory implements Serializable{
/**
*
*/
private static final long serialVersionUID = 7249744975503046565L;
private String shop_cat_id;
private String shop_cat_name;
private String shop_scat_id1;
private String shop_scat_id1name;
private String shop_scat_id2;
private String shop_scat_id2name;
private String shop_scat_id3;
private String shop_scat_id3name;
...Ignore get and set method
}
Second
you can use gson or use a lot of json.getString....
// this is your json,I replace it with ""
String jsondata="";
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray Jarray = parser.parse(jsondata).getAsJsonArray();
ArrayList<Productcategory> pc_list= new ArrayList<Productcategory>();
for (JsonElement obj : Jarray) {
Productcategory pc = gson.fromJson(obj, Productcategory.class);
pc_list.add(pc);
}
Third
Now,you get a list,you can use it for your ListView and if you want to click the item,
you should use pc_list.get(position) to get a Productcategory,so you can fill detail page.
I tried to let you know what I'm saying.But my English sucks.
You can use expandablelistview where your group will be the main category and onclick subcategory will be displayed.
To do this you need to do is create a object of product which contains shop_cat_id,shop_cat_name,... etc and then create a list of this.
Then pass this list to the BaseExpandableListAdapter, since the variable in the object maintain its position in getGroupView set the shop_cat_name to groupview and other three subcategory to getChildView.
you need change your json with following, as you mention in your comment that your sub Category is not fix then you must send one jsonArray as inner of all category. i write one for you:
"Productcategory": [
{
"shop_cat_id": "1",
"shop_cat_name": "kurtis",
"shop_scat_id1": "1",
"SubCategory": [
"cotton kurtis",
"Cotton Designer Kurtis",
"soft Designer kurtis"
]
},
........
// other jsonObject is same
you need handle id number in your code, because you have simple id number that start from 2. if have a problem with that say to me.
Edit
for catching value on SubCategory you must use following code:
JSONObject json = jsonarray.getJSONObject(i);
JSONArray SubCategoryArray = json.getJSONArray("SubCategory");
for (int i = 0 ; i < SubCategoryArray.length() ; i++)
{
map.put( i+1 , SubCategoryArray.getString(i));
// with this code you have title and id of your subCategory in map
// id start from 1 ( i + 1).
}
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
#Override
protected String doInBackground(String... params) {
try{
JSONParser jParser = new JSONParser();
String url="http://earlykid.com/android/?page=2";
IdArray=jParser.getJSONFromUrl(url);
Log.e("Fetch Data",IdArray.toString());
mLatestList.clear();
for(int i=0;i<IdArray.length();i++){
try{
JSONObject jObject;
mKids=new Kids();
jObject=IdArray.getJSONObject(i);
mKids.SetTotalPages(jObject.getString("totalItems"));
mKids.SetCurrentPage(jObject.getString("currentPage"));
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
Log.e("log_tag", "Failed data was:\n" + IdArray);
}
}
}catch(Exception e){
}
return null;
}
#Override
protected void onPostExecute(String result) {
mProgress.dismiss();
}
When i fetch the data from this code.it shows me error.
Logcat here:-
error parsing data org.json.JSONException: Value {"totalItems":38,"currentPage":"2","items":[{"id":"Atb1lE9_wzk","title":"ABCD Alphabets Song - Songs for Kids","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/Atb1lE9_wzk\/hqdefault.jpg"},{"id":"UXeeSU0QNro","title":"The rich man and his sons story - Animated Stories for Kids","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/UXeeSU0QNro\/hqdefault.jpg"},{"id":"HmiyKDYrELk","title":"Here we go round the mulberry bush - Nursery Rhyme for Kids","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/HmiyKDYrELk\/hqdefault.jpg"},{"id":"9TLnCurMs5c","title":"Old Mac Donald had a farm - Nursery Rhymes for Kids","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/9TLnCurMs5c\/hqdefault.jpg"},{"id":"DPQ_5GR_MMo","title":"Five Little Monkeys jumping on the bed - Nursery Rhymes","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/DPQ_5GR_MMo\/hqdefault.jpg"},{"id":"CvwHp2xFlJw","title":"Rain Rain go away - Nursery Rhyme","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/CvwHp2xFlJw\/hqdefault.jpg"},{"id":"WEVA9iF6i3s","title":"I'm a little teapot Nursery Rhyme with lyrics","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/WEVA9iF6i3s\/hqdefault.jpg"},{"id":"TQHyRssAM5Y","title":"Ten little fingers ten little toes - Nursery Rhyme","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/TQHyRssAM5Y\/hqdefault.jpg"},{"id":"fDGOlmgF1NE","title":"Jingle Bells Christmas Song","category":"Education","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/fDGOlmgF1NE\/hqdefault.jpg"},{"id":"Y83fbhN6FBk","title":"Pussy Cat Pussy Cat where have you been? - Nursery Rhyme","category":"Film","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/Y83fbhN6FBk\/hqdefault.jpg"},{"id":"UuqNHZEIwEI","title":"Thank you for the world so sweet - Kids Song","category":"Film","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/UuqNHZEIwEI\/hqdefault.jpg"},{"id":"g0u1iWUmg8Q","title":"Ding dong bell - Nursery Rhyme","category":"Film","thumbnail":"http:\/\/www.earlykid.com\/android\/timthumb.php?w=600&h=330src=http:\/\/i1.ytimg.com\/vi\/g0u1iWUmg8Q\/hqdefault.jpg"}]
What you are getting is a JSONObject from this url http://earlykid.com/android/?page=2
You have this
IdArray=jParser.getJSONFromUrl(url); // wrong. you get a json object
{ represents a json object node
[ represents a json array node
Your json
{
"totalItems": 38,
"totalPages": 3,
"itemsPerPage": 12,
"currentPage": "2",
"items": [
{
"id": "Atb1lE9_wzk",
"category": "Education",
"title": "ABCD Alphabets Song - Songs for Kids",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/Atb1lE9_wzk/hqdefault.jpg"
},
{
"id": "UXeeSU0QNro",
"category": "Education",
"title": "The rich man and his sons story - Animated Stories for Kids",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/UXeeSU0QNro/hqdefault.jpg"
},
{
"id": "HmiyKDYrELk",
"category": "Education",
"title": "Here we go round the mulberry bush - Nursery Rhyme for Kids",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/HmiyKDYrELk/hqdefault.jpg"
},
{
"id": "9TLnCurMs5c",
"category": "Education",
"title": "Old Mac Donald had a farm - Nursery Rhymes for Kids",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/9TLnCurMs5c/hqdefault.jpg"
},
{
"id": "DPQ_5GR_MMo",
"category": "Education",
"title": "Five Little Monkeys jumping on the bed - Nursery Rhymes",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/DPQ_5GR_MMo/hqdefault.jpg"
},
{
"id": "CvwHp2xFlJw",
"category": "Education",
"title": "Rain Rain go away - Nursery Rhyme",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/CvwHp2xFlJw/hqdefault.jpg"
},
{
"id": "WEVA9iF6i3s",
"category": "Education",
"title": "I'm a little teapot Nursery Rhyme with lyrics",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/WEVA9iF6i3s/hqdefault.jpg"
},
{
"id": "TQHyRssAM5Y",
"category": "Education",
"title": "Ten little fingers ten little toes - Nursery Rhyme",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/TQHyRssAM5Y/hqdefault.jpg"
},
{
"id": "fDGOlmgF1NE",
"category": "Education",
"title": "Jingle Bells Christmas Song",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/fDGOlmgF1NE/hqdefault.jpg"
},
{
"id": "Y83fbhN6FBk",
"category": "Film",
"title": "Pussy Cat Pussy Cat where have you been? - Nursery Rhyme",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/Y83fbhN6FBk/hqdefault.jpg"
},
{
"id": "UuqNHZEIwEI",
"category": "Film",
"title": "Thank you for the world so sweet - Kids Song",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/UuqNHZEIwEI/hqdefault.jpg"
},
{
"id": "g0u1iWUmg8Q",
"category": "Film",
"title": "Ding dong bell - Nursery Rhyme",
"thumbnail": "http://www.earlykid.com/android/timthumb.php?w=600&h=330src=http://i1.ytimg.com/vi/g0u1iWUmg8Q/hqdefault.jpg"
}
]
}
Parsing
try {
JSONObject jb = new JSONObject(myjsonstring);
String totalitems = jb.getString("totalItems");
Log.i("......", "" + totalitems);
String totalpages = jb.getString("totalPages");
String itemsPerPage = jb.getString("itemsPerPage");
String currentPage = jb.getString("currentPage");
JSONArray jarr = jb.getJSONArray("items");
for (int i = 0; i < jarr.length(); i++) {
JSONObject jb1 = jarr.getJSONObject(i);
String id = jb1.getString("id");
String categoy = jb1.getString("category");
String title = jb1.getString("title");
String pic = jb1.getString("thumbnail");
Log.i("........", id);
}
} catch (Exception e) {
}
Try this :
JsonObject oJsonObject = new JSONObject(myjsonstring);
if(oJsonObject.has("items"))
{
oJsonArray = oJsonObject.getJSONArray("items");
for(int i = 0; i < oJsonArray.length(); i++)
{
String id = oJsonArray.getJSONObject(i).getString("id");
String title = oJsonArray.getJSONObject(i).getString("title");
String category = oJsonArray.getJSONObject(i).getString("category");
String thumbnail = oJsonArray.getJSONObject(i).getString("thumbnail");
}
}
Actually in your JSON you have missed a } at the end of JOSN data so it is not a vlid JSON which you have posted over here
user can add items to cart and simultaneously an url will be fired and an json will be returned..user can add any number of products..each product has an unique product_id.now each product can have many suppliers..suppliers also have unique supplier_id..for all the items added into the cart supplier may be common for few..say we have 5products into cart and..supllier1(having unique id) supplies 3products and supplier2(having unique id) supplies 2products..now i have found out and added unique supplier_id's in a array list..in each json object there is a field called price..I have to add the prices for a unique supplier..so for 2suppliers 2 seperate prices will be shown..(1st for supplier1 by adding prices of 3products he supplies)and other for supplier2..
part of json is
{
"BasketItemID": "4455",
"BasketID": "11",
"ProductID": "12909",
"Qty": "1",
"SupplierID": "7",
"Code": "END10-001",
"Name": "ENDO STOPPERS (100)",
"Price": "5.72",
"GST": "0.64",
"PriceGST": "6.36",
"Brand": "DENT AMERICA",
"Thumbnail": null,
},
{
"BasketItemID": "4464",
"BasketID": "11",
"ProductID": "12914",
"Qty": "1",
"SupplierID": "7",
"Code": "INS52-361",
"Name": "AMALGAM GUN CVD 45' PLASTIC",
"Price": "17.00",
"GST": "1.70",
"PriceGST": "18.70",
"Brand": "LARIDENT",
"Thumbnail": null,
},
{
"BasketItemID": "4465",
"BasketID": "11",
"ProductID": "13863",
"Qty": "1",
"SupplierID": "5",
"Code": "9516068",
"Name": "Tofflemire Bands #3 0015 Pkt 12",
"Price": "2.24",
"GST": "0.22",
"PriceGST": "2.47",
"Brand": "Rand",
"Thumbnail": null,
},
so how can i add the prices?
If your problem revolves around parsing a JSON array you may want to check out the example here. Then you would filter by supplier, feel free to let me expand if you want to make your requirements more explicit.
It would look something like this (not tested)
Integer id;
Map<Integer, Double> sums;
...
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("SupplierID")) {
id = reader.nextInt();
} else if (name.equals("Price")) {
if(!sums.containsKey(id)){
sums.put(id, reader.nextDouble());
}
else{
Double f = (Double) sums.get(id);
sums.put(id, f+reader.nextDouble());
}
} else {
reader.skipValue();
}
}
In my application I created auto complete field by using the below code
sugarVariety = (AutoCompleteTextView)findViewById(R.id.autocomplete_sugarVariety);
String[] VARIETY = new String[]{ "118", "119", "120", "121", "269", "270", "271", "272", "273", "346", "347", "348", "349", "350","351", "352", "353", "354", "355", "356", "357", "358",
"359", "360", "361", "345", "117", "266", "362", "363", "364", "365", "366", "367", "368", "369", "370", "371", "372", "373", "374", "375", "376", "377",
"378", "379", "380", "239", "240", "241", "242", "114", "230", "231", "101", "102", "103", "104", "108", "111", "112", "201", "202", "204", "206", "207",
"208", "210", "217", "218", "220", "221", "226", "227", "250", "301", "302","113", "228", "0", "246", "999", "205", "251", "243","268","329", "115", "116", "274"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, VARIETY);
sugarVariety.setAdapter(adapter);
And in my layout I defined autocomplete textview as
<AutoCompleteTextView android:id="#+id/autocomplete_sugarVariety"
android:layout_width="wrap_content" android:inputType="number"
android:layout_height="42px"
android:layout_marginLeft="5dp"/>
The problem is if I give inputType="number" I am not getting AutoComplete list of numbers for the array if I remove it then only I am getting but in my case I want to show the keyboard with numbers only and also I need auto complete can any one tell me how can I get this...
Guy, you're doing something strange.
In your case you can cast all to String. If necessary get number after, you cast to INT or LONG again.
(JUMP rs)
What you're doing here is setting String array to AutoCompleteTextView of input type number.
So by changing ArrayList<String> to ArrayAdapter<Integer> will solve this problem.
sugarVariety = (AutoCompleteTextView)findViewById(R.id.autocomplete_sugarVariety);
Integer[] VARIETY = new Integer[]{ 118, 119, 120, 121, 269, 270};
ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this,
android.R.layout.simple_dropdown_item_1line, VARIETY);
sugarVariety.setAdapter(adapter);
Hope it'll help.