android - Wrong ListView item is passed by the intent -
i using backendless backend service, prob (i guess) more android/java. if u not familiar backendless, guess u can help, if u know of course :)
i have there fragment calls , opens dialogfragment listview. using there iterator retrieve data. brings each column data table array. set onclickeditemlistener when item clicked, send value textview in fragment called from.
the data comes in wrong order - didnt how sortby, connects bigger prob have there - there column there named "propertytypes". holds 4 strings, coming out in opposite order need. want "a" first, , get: "d" "c" "b" "a" ok, far no big deal, guess can sorted out sortby dont know how do. but... happens sends wrong value textview, meaning, example, when press "c" set "a" on textview , on, and, when press last one, in case "a", app crashing...
what hell going on there?? :))
here code - dialogfragment code:
public class optiondialogfragment extends dialogfragment implements adapterview.onitemclicklistener { listview mylist; textview chosenproperty; textview presentlistitem; arrayadapter adapter; @override public view oncreateview(final layoutinflater inflater, viewgroup container, bundle savedinstancestate) { //mylist.addheaderview(inflater.inflate(r.layout.option_dialog_header, null, false)); view view = inflater.inflate(r.layout.option_dialog_content, null, false); mylist = (listview) view.findviewbyid(r.id.list); view headerview = inflater.inflate(r.layout.option_dialog_header, mylist, false); headerview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { dismiss(); } }); mylist.addheaderview(headerview); view footerview = inflater.inflate(r.layout.option_dialog_footer, mylist, false); footerview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { dismiss(); } }); mylist.addfooterview(footerview); chosenproperty = (textview) view.findviewbyid(r.id.chosenproperty); getdialog().getwindow().requestfeature(window.feature_no_title); return view; } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); final arraylist<string> propertytypes = new arraylist<string>(); final arraylist<integer> numofroomies = new arraylist<integer>(); backendless.data.of(dialogoptions.class).find(new asynccallback<backendlesscollection<dialogoptions>>() { @override public void handleresponse(final backendlesscollection<dialogoptions> dialogoptions) { final iterator<dialogoptions> iterator = dialogoptions.getcurrentpage().iterator(); while (iterator.hasnext()) { dialogoptions dialogoptionsobject = iterator.next(); propertytypes.add(dialogoptionsobject.getpropertytypes()); // numofroomies.add( dialogoptionsobject.getnumofroomies() ); } adapter = new arrayadapter<string>(getactivity(), r.layout.dialog_option_list_item, r.id.presentlistitem, propertytypes); mylist.setadapter(adapter); mylist.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { string chosenitem = propertytypes.get(position); intent intent = new intent(); intent.putextra("chosenitem", chosenitem); gettargetfragment().onactivityresult( gettargetrequestcode(), activity.result_ok, intent); dismiss(); } }); } @override public void handlefault(backendlessfault fault) { // todo: make sure log exception, in case } }); } }
this relevant code in fragment calls dialogfragment:
@override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.find_a_place, container, false); chosenproperty = (textview) view.findviewbyid(r.id.chosenproperty); return view; } @override public void onviewcreated(final view view, bundle savedinstancestate) { final linearlayout properttypes = (linearlayout)view.findviewbyid(r.id.propertytypes); properttypes.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { showdialog(getactivity(), "optiondialog"); } }); } private void showdialog(fragmentactivity activity, string optiondialog) { android.support.v4.app.fragmentmanager manager = getfragmentmanager(); dialogfragment dialog = new optiondialogfragment(); dialog.settargetfragment(this, 0); dialog.show(manager, "optiondialog"); dialog.setcancelable(true); } @override public void onactivityresult(int requestcode, int resultcode, intent data) { switch(requestcode) { case 0: if (resultcode == activity.result_ok) { if(data!=null){ // set value textview chosenproperty.settext(data.getstringextra("chosenitem")); } } break; } } thanks lot in advance answer!!
reference :- https://backendless.com/feature-47-loading-data-objects-from-server-with-sorting/
to sort while retrieving object use :-
queryoptions queryoptions = new queryoptions(); queryoptions.addsortbyoption( "created asc" ); dataquery.setqueryoptions( queryoptions );
use query below:-
// fetch restaurants backendless.data.of( restaurant.class ).find( dataquery, new asynccallback<backendlesscollection<restaurant>>(){
Comments
Post a Comment