سنتعرف في هذا الجزء على كيفية التعامل مع القوائم List
يرث هذا الصنف عدد من الاعضاء Members من الصنف Screen ومن هذة الطرق setTicker, setTitle
كما انه يستخدم الواجهة Choice على الشكل implements Choice
List : عبارة عن شاشة تحتوي على مجموعة خيارات Choices يستطيع المستخدم اختيار اي واحد منها
وهناك ثلاثة اشكال لهذة القائمة
IMPLICIT : قائمة من الازرار يستطيع المستخدم الضغط على اي زر من القائمة ويتم معرفة الزر الذي تم كبسه باستخدام الطريقة getSelectedIndex التابعة للكائن المنشأ من الصنف List
اما SELECT_COMMAND : فيعبر عن الزر اختيار select الذي يأتي مترافقا مع هذا النوع من القوائم
EXCLUSIVE : تمثل قائمة خيارات يستطيع المستخدم اختيار خيار واحد فقط من هذة القائمة وتكون قيمة الخيار الذي تم اختياره true وبقية الخيارات false وهذة القائمة شبيهة بال Option في الفيجوال البيسك ويمكن معرفة قيمة كل خيار هل تم اختياره ام لا بواسطة الطريقة isSelected حيث نعطيعا رقم الخيار في القائمة وتعيد لنا قيمة true او false اي هل تم اختياره ام لا
MULTIPLE : قائمة خيارات من النوع المتعدد وتشبه الى حد ما CheckBox في الفيجوال بيسك ويتم التعامل معها بنفس التعامل مع النوع EXCLUSIVE
لناخذ مثالا انه يوجد لدينا قائمة من النوع الاول IMPLICIT
فاننا سنعرف ان المستخدم قام بالضغط على زر معين كما في هذا المثال
public void commandAction (Command c, Displayable d) {
if (d == myList) {
if (List.SELECT_COMMAND == ) {
// do Something
}
}
}يجب ملاحظة ان كل هذة القوائم يتم انشائها بنفس الطريقة ولكن فقط يختلف النوع
هذا الكائن يحتوي على مشيدين Constructor تستطيع اختيار احدهما
List(String title, int listType) List(String title, int listType, String[] stringElements, Image[] imageElements)
title : العنوان الذي سيظهر اعلى الصندوق
listType : نوع هذه القائمة وسيترتب على النوع شكل العرض
وستكتب على الشكل List.TYPE حيث ان TYPE ستمثل اما
EXCLUSIVE, IMPLICIT, MULTIPLE
stringElements : مصفوفة نصوص الاختيارات التي ستظهر كعناصر على القائمة
imageElements : مصفوفة الايقونات او الصور التي ستظهر مترافقة مع العناصر
واذا لم نرد استخدام اي ايقونه سنضع القيمة null بدلا عن المصفوفة
*******************************************************************
وبعد ان تعرفنا على بنية المشيد سنذكر الان بعض الطرق التابعة للصنف List وكيفية استخدامها
public void addCommand(Command cmd)
يرث الصنف List هذة الطريقة من الصنف Displayable
public int append(String stringPart, Image imagePart)
تقوم هذة الطريقة بإضافة عنصر ما الى القائمة وتعيد رقم العنصر في القائمة
stringPart : نص العنصر الذي نقوم باضافته
imagePart : الايقونة التي ستظهر مترافقة مع العنصر المضاف
واذا اردنا عدم اظهار اي ايقونة سنستخدم القيمة null
public int getSelectedIndex()
تعيد هذه الدالة رقم العنصر الذي تم اختياره حاليا
public boolean isSelected(int elementNum)
تعيد هذه الدالة قيمة true اذا كان هذا العنصر قد تم اختياره او false اذا لم يتم اختياره
elementNum : تعبر عن رقم العنصر
والان بعد شرحنا كيفية التعامل مع القائمة List بقي علينا ان نقوم بوضع مثال يوضح لنا كل هذا
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MyList extends MIDlet implements CommandListener
{
private Display display;
Command cmdExit = new Command("Exit", Command.EXIT, 0);
Command cmdBack = new Command("Back", Command.BACK, 0);
Command cmdInfo = new Command("Info", Command.SCREEN, 0);
List mainList;
List subList;
String[] choices;
Ticker ticker;
public MyList ()
{
display =Display.getDisplay(this);
mainList = new List("Main List",List.IMPLICIT);
ticker = new Ticker (" www.arabteam2000.com ");
choices = new String[3];
choices[0] = "choice1";
choices[1] = "choice2";
choices[2] = "choice3";
}
public void startApp()
{
mainList.append("EXCLUSIVE",null);
mainList.append("MULTIPLE",null);
mainList.addCommand(cmdExit);
mainList.setTicker(ticker);
mainList.setCommandListener(this);
display.setCurrent(mainList);
}
private void whatSelected( List list )
{
String selected = new String();
for ( int i = 0; i < list.size(); i++ )
if ( list.isSelected( i ) )
selected = selected + " , " + list.getString( i );
Alert alert = new Alert("choices");
if ( selected.length() > 0 )
alert.setString(" you selected : " + selected);
else
alert.setString("you didn`t select");
display.setCurrent(alert);
}
public void pauseApp(){ }
public void destroyApp(boolean unconditional){}
/************* implements CommandListener ****************/
public void commandAction(Command c, Displayable s)
{
if ( s == mainList )
{
if (c == cmdExit)
{
destroyApp(false);
notifyDestroyed();
}
else if ( c == List.SELECT_COMMAND )
if ( mainList.getSelectedIndex() == 0 )
{
subList = new List("EXCLUSIVE List", List.EXCLUSIVE, choices, null);
subList.addCommand(cmdBack);
subList.addCommand(cmdInfo);
subList.setCommandListener(this);
display.setCurrent(subList);
}
else if (mainList.getSelectedIndex() == 1)
{
subList = new List("MULTIPLE List",List.MULTIPLE, choices, null);
subList.addCommand(cmdBack);
subList.addCommand(cmdInfo);
subList.setCommandListener(this);
display.setCurrent(subList);
}
}
else if ( c == cmdInfo )
whatSelected( (List) s );
else if ( c == cmdBack )
{
mainList.setCommandListener(this);
display.setCurrent(mainList);
}
} // end commandAction
} // end Class