Context Menu ve Dinamik ListView

Merhaba arkadaslar , yeni bir yazıda daha beraberiz

* Bugünkü yazımızda Context Menu ve Dinamik ListView konularına değinicez . Öncelikle ContextMenu nedir ona bir bakalım ;

* Context Menu : Herhangi bir view nesnesine long-pressed(uzunca basılı tutma) olayı olustugunda ekrana yeni bir menu sunan Android içerisinde sıkça kullanılan bir view nesnesidir .

* Context Menu hakkında kısa bilgi verdikten sonra bugün ki konumuza gelelim . Layoutumuzda bulunan listView’a uzun basılması sonucunda bir contextMenu ekrana göstericeğiz . Bu menu’de iki seçenek olucak . Bunlar ; Sil ve Düzenle . Düzenle kısmına girmicez arkadaslar , Silme olayında ise tıklanınan satırı belirleyip bunu listView’ımızından çıkarıcaz ve son olarak listView’ı güncelleyerek dinamikliğini sağlıyacagız .

* Bir ekran çıktısı ;

2014-06-04 23:34:14

 

 

 

 

 

 

 

 

 

 

 

* Evet arkadaslar , yukarda gördüğünüz gibi herhangi bir satıra uzun basıldıgında ekrana bu menu’yü gösterdikten sonra eğer Sil itemi seçilirse o satırı listView’ımızdan silicez . Hazırsanız başlayalım

* Öncelikle contextMenu olusturmak için bize bir xml dosyası lazım . Bunu şu şekilde oluşturucaz ;

Res -> Menu -> New Android Xml File diyerek yeni bir xml dosyası olusturucaz . Root element olarak menu seçicez . Şöyle ki ;

2014-06-04 23:47:41

 

 

 

 

 

 

 

 

 

 

* Şimdi de xml dosyamıza bakalım ;

* Menu’müze item ekliyoruz . Burada id degeri , Java tarafından bu iteme ulaşmak için , title degeri ise ekranda gözükecek olan yazı özelliği olmakta .

* activity_main.xml dosyamızda ise sadece bir ListView bulunmakta . Buna daha önce değinmiştim , sadece xml kod kısmını paylaşmak istiyorum . Şöyle ki ;

* Sırada ve en önemlisi olan Java dosyamız var . MainActivity.java dosyamıza bir göz atalım

 

* Neler yaptık bir sırayla bakalım ;


  • Öncelikle bize lazım olan araçları tanımlıyoruz . ListView nesnemiz ve listView üzerinde gözükecek isimler için List<String> tanımı yapıyoruz . Artık klasik olan adapter ve context nesnelerimizi olusturuyoruz .
  • Sırada init() methodumuz bulunmakta ;

    * List tanımlamamızı yaptıktan sonra add() methodu ile birkaç isim ekliyoruz . Adapter nesnemizi tanımlıyoruz . ListView nesnemizle iletişime geçip , setAdapter() ile adapter ve listView’ı bağlıyoruz .
  • Daha sonra tek satırdan oluşan şu kodu yazmışız . İsimdende anlaşılacağı üzere listView nesnemizi contexMenu için kayıt ediyoruz . Yani listView üzerüne uzun basılma sonucunda contextMenu göstereceğimizi söylemiş olduk

     
  • Sırada ise ContextMenu‘zü olusturacak method var . Bunun için onCreateContextMenu() methodunu override etmemiz lazım. Şöyle ki ;

    * Hatırlarsanız daha önceden LayoutInflater kullanmşıtık . Bir diğer çeşidi ise MenuInflater , menumuzu olusturucak kısım burası arkadaslar . Inflater , Java kodumuzdan görünüm elde etmemizi sağlıyordu .

    * Methodu ile az önce olusturdugumuz menu.xml dosyası ve onCreateContextMenu methodundaki parametreyi inflate methoduna veriyoruz . Bu sayede menu.xml dosyamızdaki item’ler ContextMenu üzerinde olusturuluyor Android tarafından .
  • Son olarak ise ContextMenu’müzü Handle etmemiz lazım . Yani Menu’deki Sil ve Düzenle itemlerinin tıklanma olayına bakalım. Şöyle ki ;

    * Bunun için onContextItemSelected methodunu override ediyoruz . Parametre olarak bize MenuItem gelmekte . Bu parametre nesnesinin getItemId() methodu ile menu.xml dosyamızdaki hangi item’e(Sil ve  Düzenle) tıklandıgını anlıyoruz.

    * Bir switch-case yapısı kullandık burada arkadaslar . Eğer R.id.delete ise tıklanan, gerekli işlemleri yapıyoruz . Edit olayına girmedim , girersek biraz uzun olabilir . Şimdi ise Sil itemine basıldığında yapılacak olan işlemlere göz atalım .

    * ContextMenuInfo nesnemizi olusturuyoruz . Bu nesne yardımıyla listView üzerined hangi satıra tıklandıgını alıcaz .

    * Position bilgimizi de aldıktan sonra ArrayList olan list’den o position’u siliyoruz . Ve son olarak da adapter nesnemizin ;

    Methodu ile adapter’ımızı uyarıyoruz . Adapter bu uyarıdan sonra ArrayList’i gözden geçirerek yapılan değişikliği listView üzerinde güncelliyor .

* Bir kaç örnek görsel ekleyelim . Alican Akkuş satırına uzun basılıp Sil itemi seçildiginde ListView üzerinde bu satırın silindiğine dikkat ediniz

2014-06-04 23:34:14

 

 

 

 

 

 

 

 

 

 

2014-06-04 23:34:36

 

 

 

 

 

 

 

 

 

 

 

* Sanırım yazı burada bitti arkadaşlar . Umarım uygulama esnasında sıkıntı yaşamazsınız .

* Kaynak kodlar : Context Menu ve Dinamik ListView .

* Bir sonraki yazıda görüşmek üzere arkadaslar Mutlu kalın , Kod’la kalın ve bol bol Çay için …

* ve mâ tevfîkî illâ billâh(billâhi), aleyhi tevekkeltu ve ileyhi unîb(unîbu) /  Benim başarım ancak Allah iledir. Ben, O’na tevekkül ettim ve O’na yöneldim.” 

 

 

1324 Total Views 1 Views Today