1
edit
Changes
no edit summary
private String email;
</pre>
3.3. Add an array in <code>MyScreen</code> class to work with data.<br/>3.4. The following elements are added to the <code>MyScreen()</code> three argument constructor. Add a text field: <br/>
<pre>
</pre>
3.54. Set Add getter method for e-mail and override the border and background for <code>toString()</code> from the text fieldObject class(it will be used to implement <code>Comparator</code> interface):
<pre>
</pre>
3.65. Add a search buttonclass that will hold all Student objects and make necessary manipulations:
<pre>
public class StudentList extends SortedReadableList implements KeywordProvider { public StudentList(Vector students) { super(new StudentListComparator()); loadFrom(students.elements()); } /** * Adds a new element to the list. * @param element The element to be added. */ void addElement(Object element) { doAdd(element); ButtonField _bf} /** * A Comparator class used for sorting our Student objects by name. */ final static class StudentListComparator implements Comparator { /** * Compares two students by comparing their names in alphabetical order. * @see net.rim.device.api.util.Comparator#compare(Object, Object) */ public int compare(Object o1, Object o2) { if (o1 == null || o2 == null) { throw new ButtonFieldIllegalArgumentException("SearchCannot compare null students"); } return o1.toString().compareTo(o2.toString()); } add} public String[] getKeywords(Object element) { if(element instanceof Student ) { return StringUtilities.stringToWords(element.toString(_bf)); } return null; } }
</pre>
3.76. Add the array of students The following elements are added to the list field<code>MyScreen()</code> constructor:<br/>
<pre>
</pre>
3.7. Other elements are added inside the <code>ViewStudentApp</code> class. Add necessary private fields:
<pre>
private KeywordFilterField _keywordFilterField;
private StudentList _studentList;
private Vector _students;
</pre>
3.8. Add search field and students list:
<pre>
MyScreen _mainScreen = new MyScreen(this);
_students = getFromList();
_studentList = new StudentList(_students);
// Add our list to a KeywordFilterField object.
_keywordFilterField = new KeywordFilterField();
_keywordFilterField.setSourceList(_studentList, _studentList);
_mainScreen.setTitle(_keywordFilterField.getKeywordField());
_mainScreen.add(_keywordFilterField);
</pre>
3.8. Add inner class for custom search field:
<pre>
final static class CustomKeywordField extends BasicEditField {
// Constructor
CustomKeywordField() {
// Custom style.
super(USE_ALL_WIDTH|NON_FOCUSABLE|NO_LEARNING|NO_NEWLINE);
setLabel("Search: ");
}
/**
* Intercepts ESCAPE key.
* @see net.rim.device.api.ui.component.TextField#keyChar(char,int,int)
*/
protected boolean keyChar(char ch, int status, int time) {
switch(ch) {
case Characters.ESCAPE:
// Clear keyword.
if(super.getTextLength() > 0)
{
setText("");
return true;
}
}
return super.keyChar(ch, status, time);
}
/**
* Overriding super to add custom painting to our class.
* @see net.rim.device.api.ui.Field#paint(Graphics)
*/
protected void paint(Graphics graphics)
{
super.paint(graphics);
// Draw caret.
getFocusRect(new XYRect());
drawFocus(graphics, true);
}
}
</pre>
3.9.