الأربعاء، 21 أبريل 2010

انشاء النوافذ - القائمة

القائمة
هي عبارة عن قائمة تحتوي مجموعة من الخيارات وتسمح لك اما الاختيار منها او تنفيذ عملية عند الضغط على أحدها ويتم ذلك حسب نوع القائمة.

انشاء القائمة
List(String title, int listType)
List(String title, int listType, String[] stringElements, Image[] imageElements)
يمكن انشاء القائمه عن طريق تمرير عنوان القائمة ونوعها كما يمكنك ارسال الخيارات الابتدائية للقائمة والصورة لكل خيار. مع ملاحظة أن مصفوفة الصور يجب ان تكون مساوية في العدد للخيارات الموجودة في القائمة كما يمكنك تمرير القيمة null اذا كنت لا ترغب باضافة صور.

أنواع القائمة
Implicit: هي قائمة يتم فيها اختيار العناصر ضمنيا بمجرد تحديده وعند الضغط على ال Fire Button في الهاتف فانه سيتم استدعاء ال commandAction في المتنصت المضاف لهذة القائمة.

Exclusive: هي قائمة تسمح لك باختيار أحد الخيارات فقط.

Multiple: هذه القائمة تسمح لك باختيار مجموعة من الاختيارات في نفس الوقت.

معالجة الأحداث
معالجة الأحداث في القائمة implicit يتم بطريقة مختلفة قليلا حيث سوف يتم ارسال SELECT_COMMAND الى ال commandAction الموجودة في المتنصت وهذا ال command معرف داخل ال List Class.
public void commandAction(Command c, Displayable s) {
if (c == nextCommand)
// ...
else if (c == List.SELECT_COMMAND)
// ...
}
مثال
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.*;

public class Lists extends MIDlet implements CommandListener {
List mainList;
List implicitList;
List exclusiveList;
List multipleList;
Command cmdExit = new Command( "Exit", Command.EXIT, 0 );
Command cmdBack = new Command( "Back", Command.BACK, 0 );

public void startApp() {
String[] options = {"Implicit", "Exclusive", "Multiple"};
mainList = new List("List Example", Choice.IMPLICIT, options, null);
mainList.setCommandListener(this);
mainList.addCommand(cmdExit);

options = new String[] {"A", "B", "C"};
implicitList = new List("Implicit List", Choice.IMPLICIT, options, null);
implicitList.addCommand(cmdExit);
implicitList.addCommand(cmdBack);
implicitList.setCommandListener(this);

exclusiveList = new List("Exclusive List", Choice.EXCLUSIVE, options, null);
exclusiveList.addCommand(cmdExit);
exclusiveList.addCommand(cmdBack);
exclusiveList.setCommandListener(this);

multipleList = new List( "Multiple List", Choice.MULTIPLE, options, null );
multipleList.addCommand(cmdExit);
multipleList.addCommand(cmdBack);
multipleList.setCommandListener(this);

Display.getDisplay(this).setCurrent( mainList );

}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable d) {
if(c == List.SELECT_COMMAND && d == mainList) {
int index = mainList.getSelectedIndex();
if( index == 0 ) {
Display.getDisplay(this).setCurrent(implicitList);

} else if(index==1) {
Display.getDisplay(this).setCurrent(exclusiveList);

} else if(index == 2) {
Display.getDisplay(this).setCurrent(multipleList);

}

} else if(c == cmdBack ) {
Display.getDisplay(this).setCurrent(mainList);

} else if(c == cmdExit) {
destroyApp(true);
notifyDestroyed();

}

}
}
في السطور من 10-13 قمنا بتعريف أربعة قوائم الأولى هي القائمة الرئيسة التي سوف تختار منها نوع القائمة التي تريد عرضها. في السطور من 18-21 تم انشاء القائمة الرئيسة واضافة الخيارات لها ثم تم اضافة الأمر cmdExit والمتنصت.

في السطور ما بين 23-27 تم انشاء القائمة الضمنية implicitList واضافة الأمران cmdExit و cmdBack واضافة المتنصت. ثم تمت اعادة العملية لكل من القائمة exclusiveList والقائمة multipleList. ثم في السطر 39 تم عرض القائمة الرئيسة.

الان سوف ننتقل الى ال commandAction في السطر 49 وبها سوف نتأكد في البداية من الأمر التابع للقائمة الضمنية مع ضرورة التأكد أن الأمر تم حدوثه في النافذة الرئيسة وليس في النافذة الداخلية حيث أنه توجد قائمتان ضمنيتان وهذا تم في السطر 50. بعد ذلك قمنا بمعرفة العنصر المحدد من القائمة والذي قام المستخدم بتحديدة ثم عرضنا القائمة المناسبة لهذا العنصر.

اذا تم اطلاق الأمر رجوع cmdBack نقوم بالعودة للقائمة الرئيسة عن طريق عرضها على نافذة الهاتف.

ليست هناك تعليقات:

إرسال تعليق