My implementation :
================
public void search(){
Form hi = new Form("Auto Complete", new BoxLayout(BoxLayout.Y_AXIS));
// List list = new com.codename1.ui.List(createGenericListCellRendererModelData());
Vector v = new Vector();
for( int i =0; i<10 ; i++){
Hashtable h = new Hashtable();
h.put("name","Short-"+i);
h.put("add","Kolkata-70005"+i);
v.addElement(h);
}
//AutoCompleteTextField ac = new AutoCompleteTextField("Short", "Shock", "Sholder", "Shrek");
final DefaultListModel options = new DefaultListModel(v);
// MyAutoCompleteTextField ac = new MyAutoCompleteTextField(options) ;
AutoCompleteTextField ac = new AutoCompleteTextField(options);
//======================
ac.setMinimumElementsShownInPopup(5);
ac.setCompletionRenderer(new GenericListCellRenderer(createGenericRendererContainer(), createGenericRendererContainer()));
hi.add(ac);
hi.show();
}
private Container createGenericRendererContainer() {
Label name = new Label();
name.setFocusable(true);
name.setName("name");
Label add = new Label();
add.setFocusable(true);
add.setName("add");
/* CheckBox selected = new CheckBox();
selected.setName("Selected");
selected.setFocusable(true);*/
// System.out.println("in renderer"+name.getText().toString());
Container c = BorderLayout.center(name).
add(BorderLayout.SOUTH, add);
// add(BorderLayout.WEST, selected);*/
c.setUIID("ListRenderer");
return c;
}
The output:
After selection it's Throwing the following error:
java.lang.ClassCastException: java.util.Hashtable cannot be cast to java.lang.String
at com.codename1.ui.AutoCompleteTextField$4.actionPerformed(AutoCompleteTextField.java:324)
at com.codename1.ui.util.EventDispatcher.fireActionSync(EventDispatcher.java:459)
at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:362)
at com.codename1.ui.List.fireActionEvent(List.java:1563)
at com.codename1.ui.List.pointerReleasedImpl(List.java:2046)
at com.codename1.ui.List.pointerReleased(List.java:2056)
at com.codename1.ui.Form.pointerReleased(Form.java:2623)
at com.codename1.ui.Component.pointerReleased(Component.java:3226)
at com.codename1.ui.Display.handleEvent(Display.java:2022)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1067)
at com.codename1.ui.Display.mainEDTLoop(Display.java:996)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
## the addPopup() method also private so I can not modify it.
## Filter will be based on name.