الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

5 - 4 -التعامل مع القوائم List في J2ME

مغلق
بدأه مصعب غيلان في 8 يوليو 2004 · 4 رد · 3,886 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سنتعرف في هذا الجزء على كيفية التعامل مع القوائم 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
#2

بإذن الله سأضع الشرح للكود قريبا

#3

ساقوم بشرح فقط الاشياء التي لم تشرح سابقا

List mainList;

mainList من نوع List وهي القائمة الرئيسية التي ستظهر عند تنفيذ البرنامج

 List subList;

القائمة الثانية التي هي الاختيارات choices

String[] choices;

عبارة عن Feld يتكون من اكثر من عنصر

 mainList = new List("Main List",List.IMPLICIT);

قمنا بانشاء ال Main List وشكلها IMPLICIT

choices = new String[3];
   choices[0] = "choice1";
   choices[1] = "choice2";
   choices[2] = "choice3";

اضافة عناصر ال Feld choices

 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);
  }

هذا ال Method لمعرفة ما تم اختياره من List

list.size();

لمعرفة عدد عناصر ال List

  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);
         }

اذا كان الاختيار الاول من ال mainList قمنا بانشاء subList وعناصرها choices وشكلها واضفنا الازرار Info and Back

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);
         }

اذا كان الاختيار الثاني من ال mainList قمنا بانشاء subList وعناصرها choices وشكلها واضفنا الازرار Info and Back

لست متواجد بشكل يومي

#4

البرنامج بعد التنفيذ

Example3.jpg

لست متواجد بشكل يومي

#5
if ( c == cmdInfo )
      whatSelected( (List) s );

اذا اختير الز Info سيعود الى الاسلوب ( whatSelected( (List) s لمعرفة الذي تم اختياره وكتابة ذلك عن طريق Alert

if ( c == cmdBack )
      {
        mainList.setCommandListener(this);
         display.setCurrent(mainList);
      }

اذا اختير الزر Back سيرجع ال mainList عن طريق

mainList.setCommandListener(this);
         display.setCurrent(mainList);

لست متواجد بشكل يومي

هذا الموضوع مغلق.

مواضيع مشابهة