Field Change Listener for Custom ListView in Blackberry? -
i working in application have show contacts in list view. have created list view of vertical field manager , label fields.
i have email field , phone number field on have call on click listener.
i have implemented listener on class failed click event. not show click event.
currently, working below code:
public class customlistview extends verticalfieldmanager implements fieldchangelistener{ private verticalfieldmanager mvfm=null; private font _allfonts=null; private font _headingfonts=null; /** * @param resultvec */ public customlistview() { super(verticalfieldmanager.vertical_scroll); setmargin(0, 0, 10, 0); int resolutionwidth = display.getwidth(); // planning 3 fixed resolutions 320, 360 , 480 //handle code different devices if(resolutionwidth>=480){ _allfonts = applicationfont.explainationfont_18; _headingfonts = applicationfont.labelfont_18; }else if(resolutionwidth >=360){ _allfonts = applicationfont.explainationfont_18; _headingfonts = applicationfont.labelfont_18; }else{//resolution width <=320 _allfonts = applicationfont.explainationfont_15; _headingfonts = applicationfont.labelfont_15; } int maxlength = constants.country_list.length; int minlength = 0; if(maxlength >= 0){ (int = minlength; < maxlength; i++) { verticalfieldmanager vfm = getverticalfieldmanager(); vfm.setmargin(0, 10, 0, 10); labelfield countrylabel = new labelfield(); countrylabel.settext(constants.country_list[i]); //countrylabel.setfont(_allfonts); countrylabel.setmargin(10, 0, 10, 0); horizontalfieldmanager countryhfm = new horizontalfieldmanager(manager.use_all_width); countryhfm.add(countrylabel); countryhfm.setbackground(backgroundfactory .createsolidbackground(constants.lightgreybgcolorcode)); labelfield addresslabel = new labelfield(); addresslabel.settext(constants.address_list[i]); //addresslabel.setfont(_allfonts); labelfield statelabel = new labelfield(); statelabel.settext(constants.state_list[i]); // statelabel.setfont(_allfonts); labelfield citylabel = new labelfield(){ protected void paint(graphics graphics) { graphics.setcolor(constants.darkgreytextcolorcode); super.paint(graphics); } }; citylabel.settext(constants.city_list[i]); //citylabel.setfont(_allfonts); labelfield phonelabel = new labelfield(){ protected void paint(graphics graphics) { graphics.setcolor(constants.darkgreytextcolorcode); super.paint(graphics); } }; phonelabel.settext("phone(s):"); //phonelabel.setfont(_allfonts); labelfield numlabel = new labelfield(){ protected void paint(graphics graphics) { graphics.setcolor(constants.bluetextcolor); super.paint(graphics); } }; numlabel.settext(constants.phone_list[i]); //numlabel.setfont(_allfonts); horizontalfieldmanager phonenumberhfm = new horizontalfieldmanager(); phonenumberhfm.add(phonelabel); phonenumberhfm.add(numlabel); labelfield emaillabel = new labelfield(){ protected void paint(graphics graphics) { graphics.setcolor(constants.darkgreytextcolorcode); super.paint(graphics); } }; emaillabel.settext("email:"); //emaillabel.setfont(_allfonts); labelfield emailidlabel = new labelfield(){ protected void paint(graphics graphics) { graphics.setcolor(constants.bluetextcolor); super.paint(graphics); } }; emailidlabel.settext(constants.email_list[i]); //emailidlabel.setfont(_allfonts); horizontalfieldmanager emailidhfm = new horizontalfieldmanager(); emailidhfm.add(emaillabel); emailidhfm.add(emailidlabel); mvfm = new verticalfieldmanager(use_all_width /*|focusable*/); mvfm.setmargin(20, 0, 20, 0); mvfm.add(countryhfm); mvfm.add(addresslabel); mvfm.add(statelabel); mvfm.add(citylabel); mvfm.add(phonenumberhfm); mvfm.add(emailidhfm); mvfm.add(new nullfield(focusable)); vfm.add(mvfm); /*separatorfield separater = new separatorfield(constants.lightgreybgcolorcode); separater.setmargin(0, 10, 0, 10);*/ vfm.add(new separatorfield(constants.lightgreybgcolorcode)); add(vfm); } } } private verticalfieldmanager getverticalfieldmanager() { verticalfieldmanager verticalfieldmanager = new verticalfieldmanager( verticalfieldmanager.focusable | verticalfieldmanager.field_hcenter | verticalfieldmanager.vertical_scroll | verticalfieldmanager.use_all_width) { protected boolean touchevent(touchevent message) { if (message.getevent() == touchevent.click) { navigationclick(0, 0); } return super.touchevent(message); } public boolean navigationclick(int status, int time) { fieldchangenotify(1); return true; } protected void onfocus(int direction) { super.onfocus(direction); setbackground(backgroundfactory .createsolidbackground(/*0x186def*/constants.whitebgcolorcode)); invalidate(); } protected void onunfocus() { super.onunfocus(); setbackground(backgroundfactory .createsolidbackground(constants.whitebgcolorcode)); invalidate(); } }; return verticalfieldmanager; } public void fieldchanged(field field, int context) { } }
please suggest, how can build click listener list view.
i think have not understood needed fieldchangelistener.
here simple implementation using fieldchangelistener (note work on os 5.0 , above zoomscreen not available before then).
public myscreen() { // set displayed title of screen settitle("test zoomscreen"); buttonfield zoombutton = new buttonfield("zoom screen test"); fieldchangelistener listener=new fieldchangelistener() { public void fieldchanged(field field, int context) { encodedimage ei = encodedimage.getencodedimageresource("koala.jpg"); uiapplication.getuiapplication().pushscreen(new zoomscreen(ei)); } }; zoombutton.setchangelistener(listener); add(zoombutton); }
the important steps are:
- create field listening changes on - in case, zoombutton.
- create fieldchangelistener - in case, separate class listening, note listening done in fieldchanged() method.
- connect fieldchangelistener field listening - in case setchangelistener on zoombutton.
i think if review implementation, see have missed out of steps, seem have done (1), not (2) or (3). rather me correcting code, suggest use insight hope above has given you, , correct own code. luck.
Comments
Post a Comment