Java ME liste kullanımı

____________________________________________________________________

Listeler cep telefonunda sık kullanılabilecek türden öğelerdir. Kişiler, görevler, arama geçmişi vs. herşey liste ile gösterilir. ile de liste yapma imkanı vardır.

Java ME’de listeler javax.microedition.lcdui içindeki List sınıfı ile yapılır. Önce listede gösterilecek öğeler ile ilgili string nesneleri belirlenip bir dizi içine yerleştirilir. Ör:

String[] sayilar = {“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”};

Bu dizideki nesneler sırasıyla listemizin öğelerini oluşturacaklardır.

Bundan sonra da liste yaratılır ve önceden yaratılan dizi buraya eklenir. Bu da aşağıdaki şekilde  yapılır:

List liste =  new List(“Liste ismi”, seçim türü,string dizisi,simge dizisi);

Burada “Liste ismi” kısmına listemize vermek istediğimiz isim string olarak girilir, genelde liste ekranda gösterilirken ekranın üzerinde gösterilir.

Seçim türü amacımıza göre değişir. Bunlar üç tanedir: Choice.EXPLICIT, Choice.IMPLICIT, Choice.MULTIPLE. Eğer seçimimiz EXPLICIT ise ekrandaki listede sadece bir tane seçili öğe vardır ve bunu seçmek için farklı birşey yapmamız gerekmez. Listede aşağı veya yukarı gidildikçe yeni öğe seçilir ve eski öğenin seçimi iptal edilir. Eğer seçimimiz IMPLICIT ise listedeki öğelerden birini bir komut kullanarak seçeriz. MULTIPLE seçeneğinde ise birden fazla seçeneği seçmemiz mümkündür. Ör; her seçeneğin karşısına bir tik koymak gibi.

Seçim türünden sonra bir string dizisi girmemiz gerekir, bu dizideki her nesne listemizin bir öğesi olacak ve seçim komutları ile seçilecekler.

Simge dizisi ise listedeki öğelerimizin karşısında gösterilebilecek simgelerin bir dizisidir. Eğer böyle birşey istemiyorsak buna sadece null yazmak yeterlidir, böylece hiçbir simge gösterilmeyecek. Eğer simge göstermek istiyorsak önce simge olarak gösterilecek resim dosyasını bir Image nesnesi oluşturarak yüklemeli ve onu da bir resim dizisi içine almalıyız.

Simge oluşturma örneği:

Image simge = Image.createImage(“/simgeler/simge1.png”);//Parantez içine simgenin yolu girilir veya farklı yöntemlerle bir görüntü oluşturulur.

Image[] simgeler = new Image[] {simge, simge, simge, simge, simge, simge, simge, simge, simge, null};

İstenirse listedeki her öğe için farklı bir simge kullanılabilir. Bu durumd o simgeyi de bir Image nesnesi olarak yüklemeli ve listede istendiği indeksin resim dizisindeki karşılığına eklenmeli. Eğer bir öğede simge istenmiyorsa null yazılarak bırakılabilir.

Bundan sonra da liste oluşturma komutumuz şöyle olacaktır:

List liste = new List(“Listemiz”,Choice.IMPLICIT,sayilar,simgeler);

Bu liste çağrıldığında ekranda gösterilecektir.

Liste komutlar olmadan çoğu zaman amaçsızdır, bu öğeler ile ilgili işlemler yapacak komutlar olmalı. Komutlar da şu şekilde listeye eklenebilirler:

list.addCommand(komut_ismi);
list.setCommandListener(this);//Bu da listedeki komutları dinleyecek yani komut verildiğinde commandAction(Command komut, Displayable ekran) metodunu çağıracak öğemizi ayarlıyor.

Listede seçili olan öğeyle ilgili komut nasıl veririz?

Önce commandAction(Command komut, Displayable ekran) yönteminde

if (komut == List.SELECT_COMMAND) {…} şeklinde bir soru sorarız. Bu komutun bir listeden seçim komutu olup olmadığını belirler ve seçim komutu ise devamındaki kodları çalıştırır. Bunlarda da önce listede hangi komutun seçili olduğunu öğrenmeliyiz. Bu da şöyle olur;

int indeks = ((List)ekran).getSelectedIndex(); //getSelectedIndex() yöntemiyle seçili öğenin indeksi alınır.

Bundan sonra da bu komutu işlemenin en kolay yolu switch (Bkz. Java’da switch kullanımı) kullanmaktır. Bu da int olarak aldığımız listenin indeksini switch içinde kullanmakla olur;

switch (indeks) {
case 0:sil();break;//sil vs. komutlar örnektir
case 1:yaz();break;//, buraya istediğinizi gerçekleştirecek
case 2:kes();break;// kodu yazın
case 3:oku();break;
case 4:oku();break;
case 5:oku();break;
case 6:dinle();break;
case 7:bak();break;
case 8:düşün();break;
case 9:uygula();break;
default:xxx();//bir hata oluşmasına ihtimalle
}

Listede hangi öğe seçilmişse onun indeksine karşılık gelen durumdaki cümle çalıştırılacaktır. Bir de MULTIPLE seçim türünde birden fazla seçim olduğundan bunun kullanımı biraz farklı olacaktır. Aman burada break unutmaya kalkmayın.

Listeyi kullanacak komutlar da hazır olduktan sonra geriye bu listeyi ekranda göstermek kaldı. Listeleri doğrudan Canvas içinde kullanamayız. Listeler ayrı şekilde ekranda gösterilmeli:

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

Bu şekilde çeok çeşitli amaçlarla listeler oluşturup kullanabiliriz.