Changes

Jump to: navigation, search
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>
AutoTextEditField atf = new AutoTextEditField public Student("Student Name: "String firstName, String lastName, ""String email){ this.firstName = firstName; this.lastName = lastName; this.email = email; }
</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>
Border roundedBorder = BorderFactory.createRoundedBorder(new XYEdges public String getEmail(5, 5, 5, 5), Border.STYLE_SOLID){ return email; Background solidBackground = BackgroundFactory.createSolidBackground(Color.LIGHTSTEELBLUE);} atf.setBorderpublic String toString(roundedBorder);{ atf.setBackground(solidBackground) return firstName + " " + lastName; add(atf); }
</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>
ObjectListField olf = new ObjectListField(); // A reference to the UiApplication instance for use in this class for (int i _app =0app; i< ls.length; i++) { olf.insert(i, ls[i].getFirstName() + " " + ls[i].getLastName()); // Obtain a reference to the UiApplication's KeywordFilterField } add_keywordFilterField = _app.getKeywordFilterField(olf);
</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.
1
edit

Navigation menu