Программирование мобильных телефонов на Java



6.4.1. Методы класса List



Класс List имеет множество методов, с помощью которых можно производить редакцию списка элементов, выбор заданного элемента и многое другое. Разберем часть методов класса List.

  •  int append(String stringPart, Image imagePart) —добавление списка элементов;
  •  void delete (int elementNum) - удаление заданного элемента из списка;
  •  void deleteAll() - удаление всех элементов;
  •  Font getFont(int elementNum) - получает шрифт для заданного элемента в списке;
  •  Image getlmage(int elementNum) - получает изображение для заданного элемента в списке;
  •  int getSelectedFlags(boolean[] selectedArray_return)-возвращает состояние всех элементов в виде массива данных;
  •  int getSelectedlndext) - получает выбранный индекс элемента в списке;
  •  String getString(int elementNum) - получает строку текста для выбранного элемента из списка;
  •  void insert(int elementNum, String stringPart, Image imagePart) - вставляет элемент в список до указанного номера элемента в списке;
  •  boolean isSelected(int elementNum) - получает выбранный элемент из списка;
  •  void removeCommand (Command cmd) - удаляет команду для списка;
  •  void set(int elementNum, String stringPart, Image imagePart) - вставляет новый элемент в список в замен предшествующего;
  •  void setFont(int elementNum, Font font) - устанавливает шрифт заданному элементу в списке;
  •  void setSelectCommand (Command command) - этот метод предназначен для работы с типом IMPLICIT. Когда используется такой тип списка, то выбирается элемент, на котором сфокусирована в данный момент строка состояния. Этот метод позволяет определить, на каком элементе сфокусировано внимание пользователя. При этом используется такая запись: List .SELECT_COMMAND. для определения выбранного элемента в списке;
  •  void setSelectedFlags(boolean[] selectedArray)-устанавливает состояние выбранных элементов;
  •  void setSelectedlndexfint elementNum, boolean selected) - устанавливает индекс выбранного элемента в списке;
  •  void setTitle (String s) - добавляет название в список элементов;
  •  int size () - с помощью этого метода можно узнать количество элементов в списке.


Теперь давайте создадим пример, описывающий основные возможности класса List. Класс List может создавать три списка элементов: Exclusive, Multiple и Implicit. Используем эту возможность и создадим код, реализующий все три типа. Основная идея создания примера для класса List сводится к следующему: при входе в приложение пользователь попадает в главное окно со списком из двух элементов Multiple и Implicit, а сам список этих двух элементов будет создан на основе типа Exclusive. Ко всем элементам списка будут загружаться свои иконки. Выбрав один из двух элементов списка курсором, пользователь должен нажать клавишу команды Выбор для перехода в программе. Оба элемента списка Multiple и Implicit будут представлять два разных типа списка. Выбрав один из элементов Multiple или Implicit, пользователь попадает на новый экран. Каждый из выбранных списков будет содержать ряд элементов иллюстрирующих работу типов Multiрlе и Implicit. Выбирая элементы из этих списков, пользователь будет получать информационное сообщение. В листинге 6.9 исходный код примера..

/**
Листинг 6.9
Класс List
*/
import javax.microedition.midlet. *;
 import javax.microedition.Icdui.*;
public class
MainClassList extends MIDlet implements . CommandListener
{
// команда выхода из приложения
private Command exitMidlet = new Command("Выход",
Command.EXIT, 0);
// команда выбора элемента из списка
private Command vibor = new Command!"Выбор",
Command.SCREEN, 1);
// команда возврата в главное окно
private Command vozvrat = new Command("Назад",
Command.BACK, 1};
// команда выбора элемента для типов Implicit и Multiple
private Command OK = new Command("OK", Command.OK, 1);
// массив, иконок для типа EXCLUSIVE
Image[] iconEx = null;
// массив иконок для типа Multiple
Image t ] iconMu = null;
// массив иконок для типа Implicit
Image[] iconlm = null;
// объект класса List для типа EXCLUSIVE
private List mylistEx;
// объект класса List для типа Multiple
private List mylistMu;
// объект класса List для типа Implicit
private List mylistlm;
// объект mydisplay представляет экран телефона
private Display mydisplay;
public MainClassList()
{
mydisplay = Display.getDisplay(this);
}
public void startAppf)
 {
 // перехватываем.исключительную ситуацию;
try
{
// загрузка изображения
Image imagel = Image.createlmage("/iconMu.png");
Image image2 = Image.createlmage("/iconlm.png");
// поместить загруженные изображения в массив iconEx
iconEx = new Image[]
{
image1, image2
};
// загрузка изображения
Image imageB = Image.createlmage("/Multiple.png");
// поместить загруженные изображения в массив iconMu
iconMu = new Image[]{image3, image3, image3, image3};
// загрузка изображения
Image image4 = Image.createlmage("/Implicit.png");
// поместить загруженные изображения в массив iconIm
iconIm = new Image[]{image4, image4, image4};
} catch(Java.io.IOException ex){ }
// текст для двух элементов списка
String[] st = {"Тип Multiple","Тип Implicit"};
// инициализация объекта mylistEx
mylistEx = new List("Тип EXCLUSIVE",
Choice.EXCLUSIVE, st, iconEx);
// добавить команды
 mylistEx.addCommand(exitMidlet);
 mylistEx.addCommand(vibor);
mylistEx.setCommandListener(this);
// отразить текущий дисплей mydisplay.setCurrent(mylistEx);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable d)
 {
// выход из приложения
 if(с == exitMidlet)
{
destroyApp(false); notifyDestroyedf);
}
// возврат в главное окно
 if(с = = vozvrat)
Display.getDisplay(this).setCurrent(mylistEx);
 // обработка команды OK if(с = = OK)
{
Alert a1 = new Alert(null,"Информационное уведомление",
null, null);
mydisplay.setCurrent(al);
 }
// обработка команды vibor
if(с == vibor)
{
// взять индекс выбранного элемента
int i = mylistEx.getSelectedlndex();
// события для элемента «Тип Multiple»
if(i = =0)
{
// текст для элементов списка
String[] string = {"Меч","Щит","Нож","Копье"};
// инициализация объекта mylistMu
mylistMu = new List("Тип MULTIPLE",
Choice.MULTIPLE, string, iconMu);
// добавить команду возврата
mylistMu.addCommand(vozvrat);
// добавить команду OK
mylistMu.addCommand(OK);
mylistMu.setCommandListener(this);
// отразить текущий дисплей
mydisplay. setCurrent (mylistMu)
}
// события для элемента «Тип Implicit»
if (i = = 1)
{
// текст для элементов списка
String[] string = {"Звук","Видео","Управление"};
// инициализация объекта mylistlm
mylistlm = new List("Тип IMPLICIT",
Choice.IMPLICIT, string, iconlm);
// добавить команду возврата
mylistlm.addCommand(vozvrat);
// добавить команду OK
mylistlm.addCommand(OK);
mylistlm. setCommandListener (this);
// отразить текущий дисплей
mydisplay.setCurrent(mylistlm);
}
}
 }
 }


В листинге 6.9 создан класс MainClassList, являющийся основным классом мидлета программы. В начале исходного кода создаются команды для выхода из приложения - exitMidlet, для выбора элемента из списка - vibor, для возврата в главное окно приложения - vozvrat и команда ОК, обрабатывающая выбранный элемент из группы. За командами обработки событий следует объявление трех переменных: iconEx, iconMu и iconIm. Все три переменные будут содержать массив изображений или иконок для трех рассматриваемых в этом примере типов Exclusive, Multiple и Implicit класса List. Затем в коде:

private List mylistEx; private List mylistMu;
private  List  mylistlm;
private Display mydisplay;


Создаются три объекта класса List, представляющие три имеющихся типа элементов списка и объект mydisplay класса Display. Метод startApp() производит загрузку всех имеющихся иконок из папки \Code\Listing6_9\res с помощью метода createImage класса Image. Все загруженные иконки содержатся в переменных image1, image2, image3 и image4. При загрузке изображений используется конструкция try{} catch {) {} для перехвата исключительной ситуации. Все иконки размещаются в массивах iconEx, iconMu и iconIm для каждого типа элементов списка. В сроке кода

mylistEx = new List("Тип EXCLUSIVE", Choice.EXCLUSIVE, st,
iconEx)


происходит инициализация объекта mylistEx. Используется конструктор класса из четырех параметров. Первый параметр конструктора класса List создает заголовок для всего экрана. Во втором параметре конструктора используется значение Choice.EXCLUSIVE. С помощью этого значения создается список элементов типа Exclusive, позволяющий выбрать только один элемент из всего списка. Третий параметр в конструкторе класса List принимает значение переменной st. Эта переменная содержит две строки текста, создавая тем самым только два элемента списка. Последний параметр загружает две иконки для обоих элементов списка.

В методе commandAction () происходит обработка всех .имеющихся команд созданных в приложении. Команда exitMidlet производит выход из приложения. Команда vozvrat возвращает пользователя в главное окно программы. Команда ОК показывает информационное сообщение, выполненное на основе класса Alert. Команда vibor осуществляет переход в выбранный экран представленный списком элементов двух различных типов Multiple и Implicit класса List. С помощью метода getSelectedIndex() берется индекс выбранного элемента из списка и на его основе в конструкции if /else происходит обработка выбранных событий. Два типа списков Multiple и Implicit создаются подобно списку типа Exclusive. Рис. 6.11 изображает эмулятор, на экране которого воспроизводится список элементов организованный с помощью класса List.



Рис. 6.11. Список элементов созданный классом List


В мобильных приложениях очень часто используются различные списки элементов, поэтому необходимо изучить возможности класса List более внимательно.

Назад Начало Вперед



Книжный магазин