Android Studio Context Menü Oluşturma

Bu projemizde android Studio ile context menü oluşturacağız. Proje sonunda aşağıdaki ekran görüntüsünü elde etmiş olacağız. Her bir texte basılı tuttuğumuzda ekrana düzenle ve sil seçenekleri gelecektir. Ayrıca bu projede ekrana metinleri Listview ile getireceğiz ve böylelikle listview kullanımına da değinmiş olacağız.

Projenin kodlarına sayfanın en aşağısından ulaşabilirsiniz!

İlk olarak yeni bir proje açtıktan sonra ekrana yazacağımız liste elemanlarını res klasörü ardından values klasöründen strings.xml belgesine tıklayarak yeni bir dizi oluşturuyoruz.

<string-array name=“isimler”> diyerek yeni bir dizi oluşturup dizi elemanlarını ekledikten sonra diğer adıma geçelim.

2.adım olarak res klasörü altından layout klasörü içinde bulunan activity_main.xml haricinde 2 adet daha layout oluşturacağız.

Birincisi ana_sayfa.xml

İkincisi liste_elemanlari.xml

3.adım olarak ana_sayfa.xml dosyamıza tıklıyoruz ve içerisine:

Linearlayout ve onun içerisine textview ve listview koyuyoruz.

Textview’in idsini textViewDurum yapıyoruz.

Listview’in idsini ListVieDurum yapıyoruz.

Liste_elemanlari.xml ve activity_main.xml’e bir şey koymadan devam ediyoruz.

4.adım olarak java dosyamız olan MainActivity’e geliyoruz.

İlk olarak string.xml dosyamızda oluşturduğumuz dizi elemanlarını listviewde göstereceğiz.

İlk olarak onCreate içerisine görseldeki kodları yazmaya başlıyoruz.

Kod açıklaması:

durumTextView = (TextView) findViewById(R.id.textViewDurum);

Bu kod bloğunda anasayfamıza koyduğumuz textview’e ulaşarak onu bir değişkene atıyoruz.

ListView listem = (ListView) findViewById(R.id.ListViewDurum);

Bu kod bloğunda anasayfamıza koyduğumuz listview’e ulaşarak onu bir değişkene atıyoruz.

String[] gelenisimler = getResources().getStringArray(R.array.isimler);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.liste_elemanlari, gelenisimler);
listem.setAdapter(adapter);
registerForContextMenu(listem);

Bu kod bloklarında gelenisimler diye dizi değişkenine önceden oluşturduğumuz isimler dizisini atıyoruz. Daha sonra string türünden bir geçici arrayadapter oluşturup gelenisimler değişkenine atadığımız dizi elemanlarını geçici olarak adapter değişkeninde tutuyoruz.

Adapter bir veri kaynağıyla, veriye ihtiyacı olan nesneyi birbirine bağlamaya yarayan yapılardır.ArrayAdapter bir veri kaynağındaki verileri (kısaca, veri modelini) görsel öğelerde kullanmaya uygun hale getirir.

Daha sonra listem olarak adlandırdığımız listviewe set ederek adapterı yazdırıyoruz.

Buraya kadar ekrana listedeki elemanları yazdırdık. Ekran görüntüsüne bir bakalım

Daha sonra görseldeki gibi kodlarımızı bu sefer onCreate dışına yazmaya devam ediyoruz.

1 numaralı alan için:

ilk olarak ekranda oluşturduğumuz her bir dizi elemanına basılı tuttuğumuzda menümüzde kaç seçenek çıkacak bunun için değişken tanımlıyoruz ve FIRST ve FIRST+1 diyerek menüdeki seçeneklerin birbirlerine göre sıralamasını belirliyoruz.

Düzenle ve sil seçenekleri yaptık ve ilk olarak düzenle seçeneği gelsin sonra sil gelsin dedik.

onCreateContextMenu metodunu kullanarak menü nesnesi oluşturduk ve bu menü nesnesine add diyerek yukarıda oluşturduğumuz değişkenleri yerleştirdik.

menu.add(Menu.NONE, ID_DUZENLE, 0, “Düzenle”);
menu.add(Menu.NONE, ID_SIL, 1, “Sil”);

menüde ilk seçeneğimiz oluşturduğumuz ID_DUZENLE seçeneği olsun, 0 diyerek ilk seçenek olsun diyerek en sonda tırnak işaretleri arasında seçeneğin üzerinde yazacak text metini belirliyoruz.

Sil seçeneği içinde aynısı geçerli sadece seçeneğin 2. sırada olması için 1 diyerek devam ediyoruz.

 

2 numaralı alan için:

onContextItemSelected metodunu kullanıyoruz. Yani menüden seçeneklerin birinin seçilmesi durumunda ne yapılacağını burada tanımlayacağız. MenuItem nesnesinin döndürmektedir. Burada itemler ile işlemler yapacağız.

AdapterView.AdapterContextMenuInfo bilgi = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

 

burada ContextMenu aracılığı ile seçilen ListView elemanına ulaştık.

Daha sonra if açarak item.getItemId()==ID_SIL  diyerek seçilen itemin id si eğer ID_SIL ise durumtextviwe seçilen seçeneğin ismi yazılarak tıklandı desin diyoruz.

Düzenle içinde aynısını yaptıktan sonra burada yaptığımız işlemler kısaca menüdeki seçilen seçeneğin hangi seçenek olduğunu textviewe yazmaktadır.

Kodlarımız burada bitmektedir artık uygulamamızı çalıştırabiliriz.

Ekran görüntüsü:

KODLAR:

strings.xml kodları:

<resources>
<string name="app_name">My Application</string>
<string-array name="isimler">
<item>robodeney</item>
<item>robodeney2</item>
<item>robodeney3</item>
<item>robodeney4</item>
</string-array>
</resources>


ana_sayfa.xml kodları:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/textViewDurum"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />

<ListView
android:id="@+id/ListViewDurum"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>


MainActivity kodları:
package com.example.mfurkan.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

private TextView durumTextview;

private static final int ID_DUZENLE=Menu.FIRST;
private static final int ID_SIL=Menu.FIRST+1;
public void onCreateContextMenu(ContextMenu menu, View view,ContextMenu.ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu,view,menuInfo);
menu.add(Menu.NONE,ID_DUZENLE,0,"Düzenle");
menu.add(Menu.NONE,ID_SIL,1,"Sil");

}


public boolean onContextItemSlected(MenuItem item)
{
AdapterView.AdapterContextMenuInfo bilgi=(AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
TextView secilenoge=(TextView) bilgi.targetView;
if(item.getItemId()==ID_SIL)
{
durumTextview.setText(secilenoge.getText()+" için sil tıklandı");
return true;

}
if(item.getItemId()==ID_DUZENLE)
{
durumTextview.setText(secilenoge.getText()+" için düzenle tıklandı");
return true;

}
return false;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ana_sayfa);
durumTextview=(TextView) findViewById(R.id.textViewDurum);
ListView listem=(ListView) findViewById(R.id.ListViewDurum);
String[] gelenisimler=getResources().getStringArray(R.array.isimler);
ArrayAdapter<String> adapter=new ArrayAdapter<>(this,R.layout.liste_elemanlari,gelenisimler);
listem.setAdapter(adapter);
registerForContextMenu(listem);
}
}

Projenin videolu anlatımına youtube kanalımızdan ulaşmak için TIKLAYINIZ.

Diğer android studio dersleri için TIKLAYINIZ.

Muhammed Furkan Zerey

2 Thoughts to “Android Context menü”

  1. Name

    Teşekkürler, küçük bir kod parçası için onlarca site dolaştım aradığımı burada buldum.

    1. mfurkanwp

      rica ederiz 🙂

Leave a Comment