Android Programlama | Detaylı Arayüz Elemanları #3

deltaturk

Katılımcı Üye
26 Kas 2020
925
976
Green Team Mersin Daire Bşk.

Uzun Aradan Sonra Android Programlama Dersine Devam Ediyoruz :)

Scrool View


Geçmiş konularda kullandığım Arayüz elemanlarını kullanarak ScroolView kullanımı göstereceğim

ScroolView Nedir ?
Yazdığımız bazı uygulamalar ekrana sığmaz bunun için scroolview kullanırız kısmen kaydırma ekranıdır.


XML İle ScroolView Oluşturma
ScroolView eklerken önemli olan bir kısım ScroolView içerisinde LinearLayout tanımlamaktır.
ScroolView içerisine sadece bir layout ekleyebiliriz ama LinearLayout İçerisine birden fazla layout ekleyebiliriz.

Birden fazla layout ekleyeceğimiz zaman android: orientation="vertical veremiz gerekir.


XML:
<ScroolView
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<LinearLayout
android:layout_width="match_parent"
android:eek:rientation="vertical"
android:layout_height="match_parent">
</LinearLayout>
</ScroolView>

#İmageVİew Ve 1 LinearLayout Daha Ekleyelim

<İmageView
android:layout_width="match_parent"
android:background="@drawable/resim adı"
android:layout_height="200dp" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:eek:rientation="horizontal" >

#Bir buton ekleyelim

<Button
android:layout_width="0dp"
android:text="1"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:layout_width="0dp"
android:text="2"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:layout_width="0dp"
android:text="3"
android:layout_height="wrap_content"
android:layout_weight="1" />
</ LinearLayout

#RadioGroup eklemeliyiz ama bunu ana layout'un içine yapmalıyız yoksa responsive olmaz

<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content
android:text="Fenerbahçe" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Galatasaray" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Beşiktaş" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Trabzonspor" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Diğer" />
</RadioGroup>

#CheckBox Ve TextView tanımlayalım
#Kullandığımız TextView'in amacı iki bölümü birbirinden ayırmak için çizgi çekmek oldu.

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="-------------------------------" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PHP" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Java" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C#" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Python" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C" />

#Tekrar bölümleri ayırmak için TextView Ekliyoruz

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="-------------------------------" />

#EditText Ekliyoruz

<EditText
android:layout_width="match_parent"
android:hint="Yaş Gir"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>






ScrollView'in Activity ile ilgili bir işi olmadığı için bu arayüz elemanını sadece XML üstünden gösterdim.
Yaptığımız uygulamada birden fazla layout ve arayüz elemanı ekledik, mobil cihazımızın ekranı dolduğu için ScrollView yardımıyla geri kalan arayüz elemanlarını aşağı doğru hizalamış olduk.
Artık ekranımızı aşağı doğru kaydırabiliyoruz.
ScoolView yazmışım bazı yerlere dikkat edin
Doğrusu ScrollView...



List View


ListView'ler çok önemlidir bunu iyi kavramalıyız genellikle hep kullanacağımız bir arayüz elemanıdır.
Birbirleri İle İlişkili verileri tek liste halinde verebiliriz.
Aynı scrollView gibi tek parmağımızla aşşağı yukarı yaparak liste verilerine bakabiliriz.
Kendi içinde birden fazla TextView Barındıran bir arayüz elemanıdır.
Örneğin WhatsApp'de kişi listesine tıkladığımızda karşımıza çıkan sayfa bir ListView örneğidir.
Tek Block İçerisinde birden fazla Veri vardır.


XML İle ListView Oluşturma

XML:
<ListView 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/listview"> 
</ListView>
#Taha Şenlik
#TürkHackTeam




Activity Kısmına Gelip Bir Tane Model Oluşturalım Bunu Nasıl Yapacağız Derseniz ;




Resimde gördüğümüz , javanın altındaki
com.example.projeadınız > Sağ Tuş > New > Java Class > Model İsmi




Karşımıza Yukarıdaki Sayfa Gelmeli.
Burda kullanıcının hangi değerleri olmalı onları yazalım

Java:
public class KullaniciModel { 
String isim; 
String yas; 
String soyisim; 
String tim;
}
#TAHA ŞENLİK


Şimdi bir sınıf oluşturmalıyız, bu sınıfın amacı Yukardaki değişkenlere ait SET Ve GET Methodlarını barındıracak.


Java:
public String getIsim() {     
return isim; 
} 
public void setIsim(String isim) {     
this.isim = isim; 
} 
public String getYas() {     
return yas; 
} 
public void setYas(String yas) {     
this.yas = yas; 
} 
public String getSoyisim() {     
return soyisim; 
} 
public void setSoyisim(String soyisim) {     
this.soyisim = soyisim; 
} 
public String getTim() {     
return tim; 
} 
public void setTim(String tim)
{     
this.tim = tim; 
}


MainActivity.java Kısmına Geçiyoruz

Java:
public class MainActivity extends AppCompatActivity { 
List<KullaniciModel> kullaniciList; 
@Override
protected void onCreate(Bundle savedInstanceState) {     
super.onCreate(savedInstanceState);     
setContentView(R.layout.activity_main); 
} 
public void listeDoldur() 
{     
kullaniciList = new ArrayList<>(); 
}
}

Şimdi İse KullaniciModel sınıfı için constructor eklememiz lazım

KullaniciModel.java ya gidip ;

Java:
public KullaniciModel(String isim, String yas, String soyisim, String tim) { 
this.isim = isim; 
this.yas = yas; 
this.soyisim = soyisim; 
this.tim = tim;}






Tekrar MainActivity.java ya Geçiş Yapalım

Java:
public void listeDoldur()
{ 
kullaniciList = new ArrayList<>(); 
KullaniciModel k1 = new KullaniciModel("Taha", "99", "Han", "Fenerbahçe Basketbol"); 
KullaniciModel k2 = new KullaniciModel("Delta", "75", "Türk", "Takım"); 
KullaniciModel k3 = new KullaniciModel("Green", "22", "Team", "THT"); 
KullaniciModel k4 = new KullaniciModel("Tahahan", "85", "Green", "GreenTeam"); 
kullaniciList.add(k1); 
kullaniciList.add(k2); 
kullaniciList.add(k3); 
kullaniciList.add(k4);
}



Listelerimiz Eklendi.

Şimdi İse Layout Tasarımı Yapalım, Bunun İçin
res >> layout >> New >> XML >> XML Layout File
kısmına gidip finish diyoruz.




Resimde gördüğünüz gibi yenir bir layout tasarımını oluşturduk.
Yeni Layout'a Renk Ve layout_heigt Ayarı Yapıyoruz




XML:
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]" 
android:layout_width="match_parent" 
android:background="#158D4C" 
android:layout_height="wrap_content">
</LinearLayout>


XML İle LinearLayout Ve İçine TextView Ekliyoruz

XML:
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Adı : " />

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/isim" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">
 
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Soyisim : " />
 
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/soyisim" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content"> 
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Yaş : " /> 

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/yas" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">
 
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Tim : " /> 

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/tim" />
</LinearLayout>






4 List'de oluşturuldu.
Şuan ise yapacağım işlem Adapter eklemek olacak, bunu nasıl ekleyeceğiz derseniz ;






com.example.mk.projeadı >> Sağ Tuş >> New >> Java Class burdan ismi KullaniciListAdapter yaptım



Resimde gördüğünüz üzere Adapter class'ı oluşturduk.
Almamız gereken extends adlı bir sınıf var BaseAdapter ile çalışacağız o yüzden bu sınıfı kullanıyoruz.


Java:
public class KullaniciListAdapter extends BaseAdapter { 
@Override
public int getCount() {     
return 0; 
} 
@Override
public Object getItem(int i) {     
return null; 
} 
@Override
public long getItemId(int i) {     
return 0; 
} 
@Override
public View getView(int i, View view, ViewGroup viewGroup) {     
return null; 
}
}


Bir Cons oluşturuyoruz ve yukardaki kodlarda Count-Item-View kısımlarını aşşağıdaki gibi dolduruyoruz.


Java:
import java.util.List;
public class KullaniciListAdapter extends BaseAdapter {
  
List<KullaniciModel> list; 
Context context; 
public KullaniciListAdapter(List<KullaniciModel> list, Context context) 
{     
this.list = list;     
this.context = context; 
} 
@Override
public int getCount() {     
return list.size(); 
} 
@Override
public Object getItem(int position) {     
return list.get(position); 
} 
@Override
public long getItemId(int position) {     
return 0; 
} 
@Override
public View getView(int position, View convertView, ViewGroup parent) {     
View layout = LayoutInflater.from(context).inflate(R.layout.layout,parent,false);     
TextView isim = layout.findViewById(R.id.isim);     
TextView soyisim = layout.findViewById(R.id.soyisim);     
TextView  yas = layout.findViewById(R.id.yas);     
TextView tim = layout.findViewById(R.id.tim);     
isim.setText(list.get(position).getIsim());     
soyisim.setText(list.get(position).getSoyisim());     
yas.setText(list.get(position).getYas());     
tim.setText(list.get(position).getTim());     
return layout; 
}
}


MainActivity.java içindeki kod bloguna


public class MainActivity extends AppCompatActivity {
    List<KullaniciModel> kullaniciList;
    #BURAYA 1

    [USER=931120]@Override[/USER]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        #BURAYA 2
    };
    }

#BURAYA1  Kısmına

KullaniciListAdapter adp;
ListView listView;

#BURAYA 2 Kısmına

listeDoldur();
tanimla();

public void listeDoldur()
{ 
kullaniciList = new ArrayList<>(); 
KullaniciModel k1 = new KullaniciModel("Taha", "99", "Han", "Fenerbahçe Basketbol"); 
KullaniciModel k2 = new KullaniciModel("Delta", "75", "Türk", "Takım"); 
KullaniciModel k3 = new KullaniciModel("Green", "22", "Team", "THT"); 
KullaniciModel k4 = new KullaniciModel("Tahahan", "85", "Green", "GreenTeam"); 
kullaniciList.add(k1); 
kullaniciList.add(k2); 
kullaniciList.add(k3); 
kullaniciList.add(k4);

#BURAYA 3
}

#BURAYA 3 Kısmına







Java:
adp = new KullaniciListAdapter(kullaniciList, this);
listView.setAdapter(adp);


MainActivity.java nın en altında;


Java:
void tanimla(){    listView = findViewById(R.id.listview);}[/B][/I][/SIZE]




Sonuç Olarak Kodlarımız Şu an Çalışır Hale Geldi.



Neler Yaptık ?

  • Önce XML tarafında bir tane ListView oluşturduk
  • Sonra ListView'imizin her bir item'ine ait bir layout olacak
  • Bu Layout'da temel bilgiler içerecek
  • Daha sonra model Class'ı oluşturup nesnelerini oluşturduk ve bu nesneleri bizim kullanıcı listemize atadık.
  • Adapter oluşturduk adapter de list ve context aldık context almamızın sebebi ise oluşturudğumuz layout.xml tasarımına ulaşmak için.
  • Daha sonra layout.xml'e ulaştık.
  • Sonra view elemanlarının tanımlamasını yaptık bu tanımlamadan sonra setText'in bu listview elemanını sıfırıncı elemanı dönüyorsa birinci elemanın birinci pozisyonunda olacak
  • Sonra adapter nesnesi oluşurken cons'a, cons 1 tane list alsın bir tane de context alsın dedik
  • Daha sonra listView'imizin setAdapter'ine adp atarak İşlemimizi Bitirdik


Recycler View


Recycler View Android Studio içerisinde kurulu gelmediği için bunu nasıl Android Studio'ya ekleriz onu göstereceğim.


Nedir ?
Aynı ListView'de ki gibi bir listenin ekran da görüntülenmesini sağlayan view elemanıdı.
Çok kullanışlıdır aynı zamanda uygulamalarımza daha responsive ve güzel bir görünüm sağlar.


ListView İle Farkları
RecyclerView daha esnek bir yapıya sahiptir.
Hem yatay hem de dikey olarak konumlanan bir yapıya sahiptir.
Verilerin konumlanabilmesini yönetebilmek için Layout Manager yapısını kullanır.


RecyclerView Kütüphanesi Kurma
GradleScript İçerisinde >> build.gradle module içerisinde >> dependencies altına alttaki kodu giriyoruz.

Java:
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha05'[/B][/I][/SIZE]



RecyclerView kurulumunu da tamamlamış olduk
RecyclerView için ayrı bir konu gelecek, bu arayüz elemanı için biraz fazla uygulama yapacağız diğer konumuzda.



Okuduğunuz İçin Teşekkür Ederim İyi Forumlar :)[/CEN​
 

JohnWick51

Uzman üye
20 Mar 2022
1,867
770
28
Ellerine sag

Uzun Aradan Sonra Android Programlama Dersine Devam Ediyoruz :)

Scrool View


Geçmiş konularda kullandığım Arayüz elemanlarını kullanarak ScroolView kullanımı göstereceğim

ScroolView Nedir ?
Yazdığımız bazı uygulamalar ekrana sığmaz bunun için scroolview kullanırız kısmen kaydırma ekranıdır.


XML İle ScroolView Oluşturma
ScroolView eklerken önemli olan bir kısım ScroolView içerisinde LinearLayout tanımlamaktır.
ScroolView içerisine sadece bir layout ekleyebiliriz ama LinearLayout İçerisine birden fazla layout ekleyebiliriz.

Birden fazla layout ekleyeceğimiz zaman android: orientation="vertical veremiz gerekir.


XML:
<ScroolView
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<LinearLayout
android:layout_width="match_parent"
android:eek:rientation="vertical"
android:layout_height="match_parent">
</LinearLayout>
</ScroolView>

#İmageVİew Ve 1 LinearLayout Daha Ekleyelim

<İmageView
android:layout_width="match_parent"
android:background="@drawable/resim adı"
android:layout_height="200dp" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:eek:rientation="horizontal" >

#Bir buton ekleyelim

<Button
android:layout_width="0dp"
android:text="1"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:layout_width="0dp"
android:text="2"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:layout_width="0dp"
android:text="3"
android:layout_height="wrap_content"
android:layout_weight="1" />
</ LinearLayout

#RadioGroup eklemeliyiz ama bunu ana layout'un içine yapmalıyız yoksa responsive olmaz

<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content
android:text="Fenerbahçe" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Galatasaray" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Beşiktaş" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Trabzonspor" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Diğer" />
</RadioGroup>

#CheckBox Ve TextView tanımlayalım
#Kullandığımız TextView'in amacı iki bölümü birbirinden ayırmak için çizgi çekmek oldu.

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="-------------------------------" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PHP" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Java" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C#" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Python" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C" />

#Tekrar bölümleri ayırmak için TextView Ekliyoruz

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="-------------------------------" />

#EditText Ekliyoruz

<EditText
android:layout_width="match_parent"
android:hint="Yaş Gir"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>






ScrollView'in Activity ile ilgili bir işi olmadığı için bu arayüz elemanını sadece XML üstünden gösterdim.
Yaptığımız uygulamada birden fazla layout ve arayüz elemanı ekledik, mobil cihazımızın ekranı dolduğu için ScrollView yardımıyla geri kalan arayüz elemanlarını aşağı doğru hizalamış olduk.
Artık ekranımızı aşağı doğru kaydırabiliyoruz.
ScoolView yazmışım bazı yerlere dikkat edin
Doğrusu ScrollView...



List View


ListView'ler çok önemlidir bunu iyi kavramalıyız genellikle hep kullanacağımız bir arayüz elemanıdır.
Birbirleri İle İlişkili verileri tek liste halinde verebiliriz.
Aynı scrollView gibi tek parmağımızla aşşağı yukarı yaparak liste verilerine bakabiliriz.
Kendi içinde birden fazla TextView Barındıran bir arayüz elemanıdır.
Örneğin WhatsApp'de kişi listesine tıkladığımızda karşımıza çıkan sayfa bir ListView örneğidir.
Tek Block İçerisinde birden fazla Veri vardır.


XML İle ListView Oluşturma

XML:
<ListView 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/listview"> 
</ListView>
#Taha Şenlik
#TürkHackTeam




Activity Kısmına Gelip Bir Tane Model Oluşturalım Bunu Nasıl Yapacağız Derseniz ;




Resimde gördüğümüz , javanın altındaki
com.example.projeadınız > Sağ Tuş > New > Java Class > Model İsmi




Karşımıza Yukarıdaki Sayfa Gelmeli.
Burda kullanıcının hangi değerleri olmalı onları yazalım

Java:
public class KullaniciModel { 
String isim; 
String yas; 
String soyisim; 
String tim;
}
#TAHA ŞENLİK


Şimdi bir sınıf oluşturmalıyız, bu sınıfın amacı Yukardaki değişkenlere ait SET Ve GET Methodlarını barındıracak.


Java:
public String getIsim() {     
return isim; 
} 
public void setIsim(String isim) {     
this.isim = isim; 
} 
public String getYas() {     
return yas; 
} 
public void setYas(String yas) {     
this.yas = yas; 
} 
public String getSoyisim() {     
return soyisim; 
} 
public void setSoyisim(String soyisim) {     
this.soyisim = soyisim; 
} 
public String getTim() {     
return tim; 
} 
public void setTim(String tim)
{     
this.tim = tim; 
}


MainActivity.java Kısmına Geçiyoruz

Java:
public class MainActivity extends AppCompatActivity { 
List<KullaniciModel> kullaniciList; 
@Override
protected void onCreate(Bundle savedInstanceState) {     
super.onCreate(savedInstanceState);     
setContentView(R.layout.activity_main); 
} 
public void listeDoldur() 
{     
kullaniciList = new ArrayList<>(); 
}
}

Şimdi İse KullaniciModel sınıfı için constructor eklememiz lazım

KullaniciModel.java ya gidip ;

Java:
public KullaniciModel(String isim, String yas, String soyisim, String tim) { 
this.isim = isim; 
this.yas = yas; 
this.soyisim = soyisim; 
this.tim = tim;}






Tekrar MainActivity.java ya Geçiş Yapalım

Java:
public void listeDoldur()
{ 
kullaniciList = new ArrayList<>(); 
KullaniciModel k1 = new KullaniciModel("Taha", "99", "Han", "Fenerbahçe Basketbol"); 
KullaniciModel k2 = new KullaniciModel("Delta", "75", "Türk", "Takım"); 
KullaniciModel k3 = new KullaniciModel("Green", "22", "Team", "THT"); 
KullaniciModel k4 = new KullaniciModel("Tahahan", "85", "Green", "GreenTeam"); 
kullaniciList.add(k1); 
kullaniciList.add(k2); 
kullaniciList.add(k3); 
kullaniciList.add(k4);
}



Listelerimiz Eklendi.

Şimdi İse Layout Tasarımı Yapalım, Bunun İçin
res >> layout >> New >> XML >> XML Layout File
kısmına gidip finish diyoruz.




Resimde gördüğünüz gibi yenir bir layout tasarımını oluşturduk.
Yeni Layout'a Renk Ve layout_heigt Ayarı Yapıyoruz




XML:
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]" 
android:layout_width="match_parent" 
android:background="#158D4C" 
android:layout_height="wrap_content">
</LinearLayout>


XML İle LinearLayout Ve İçine TextView Ekliyoruz

XML:
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Adı : " />

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/isim" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Soyisim : " />

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/soyisim" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content"> 
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Yaş : " /> 

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/yas" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Tim : " /> 

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/tim" />
</LinearLayout>






4 List'de oluşturuldu.
Şuan ise yapacağım işlem Adapter eklemek olacak, bunu nasıl ekleyeceğiz derseniz ;






com.example.mk.projeadı >> Sağ Tuş >> New >> Java Class burdan ismi KullaniciListAdapter yaptım



Resimde gördüğünüz üzere Adapter class'ı oluşturduk.
Almamız gereken extends adlı bir sınıf var BaseAdapter ile çalışacağız o yüzden bu sınıfı kullanıyoruz.


Java:
public class KullaniciListAdapter extends BaseAdapter { 
@Override
public int getCount() {     
return 0; 
} 
@Override
public Object getItem(int i) {     
return null; 
} 
@Override
public long getItemId(int i) {     
return 0; 
} 
@Override
public View getView(int i, View view, ViewGroup viewGroup) {     
return null; 
}
}


Bir Cons oluşturuyoruz ve yukardaki kodlarda Count-Item-View kısımlarını aşşağıdaki gibi dolduruyoruz.


Java:
import java.util.List;
public class KullaniciListAdapter extends BaseAdapter {
  
List<KullaniciModel> list; 
Context context; 
public KullaniciListAdapter(List<KullaniciModel> list, Context context) 
{     
this.list = list;     
this.context = context; 
} 
@Override
public int getCount() {     
return list.size(); 
} 
@Override
public Object getItem(int position) {     
return list.get(position); 
} 
@Override
public long getItemId(int position) {     
return 0; 
} 
@Override
public View getView(int position, View convertView, ViewGroup parent) {     
View layout = LayoutInflater.from(context).inflate(R.layout.layout,parent,false);     
TextView isim = layout.findViewById(R.id.isim);     
TextView soyisim = layout.findViewById(R.id.soyisim);     
TextView  yas = layout.findViewById(R.id.yas);     
TextView tim = layout.findViewById(R.id.tim);     
isim.setText(list.get(position).getIsim());     
soyisim.setText(list.get(position).getSoyisim());     
yas.setText(list.get(position).getYas());     
tim.setText(list.get(position).getTim());     
return layout; 
}
}


MainActivity.java içindeki kod bloguna


public class MainActivity extends AppCompatActivity {
    List<KullaniciModel> kullaniciList;
    #BURAYA 1

    [USER=931120]@Override[/USER]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        #BURAYA 2
    };
    }

#BURAYA1  Kısmına

KullaniciListAdapter adp;
ListView listView;

#BURAYA 2 Kısmına

listeDoldur();
tanimla();

public void listeDoldur()
{ 
kullaniciList = new ArrayList<>(); 
KullaniciModel k1 = new KullaniciModel("Taha", "99", "Han", "Fenerbahçe Basketbol"); 
KullaniciModel k2 = new KullaniciModel("Delta", "75", "Türk", "Takım"); 
KullaniciModel k3 = new KullaniciModel("Green", "22", "Team", "THT"); 
KullaniciModel k4 = new KullaniciModel("Tahahan", "85", "Green", "GreenTeam"); 
kullaniciList.add(k1); 
kullaniciList.add(k2); 
kullaniciList.add(k3); 
kullaniciList.add(k4);

#BURAYA 3
}

#BURAYA 3 Kısmına







Java:
adp = new KullaniciListAdapter(kullaniciList, this);
listView.setAdapter(adp);


MainActivity.java nın en altında;


Java:
void tanimla(){    listView = findViewById(R.id.listview);}[/B][/I][/SIZE]




Sonuç Olarak Kodlarımız Şu an Çalışır Hale Geldi.



Neler Yaptık ?


  • Önce XML tarafında bir tane ListView oluşturduk
  • Sonra ListView'imizin her bir item'ine ait bir layout olacak
  • Bu Layout'da temel bilgiler içerecek
  • Daha sonra model Class'ı oluşturup nesnelerini oluşturduk ve bu nesneleri bizim kullanıcı listemize atadık.
  • Adapter oluşturduk adapter de list ve context aldık context almamızın sebebi ise oluşturudğumuz layout.xml tasarımına ulaşmak için.
  • Daha sonra layout.xml'e ulaştık.
  • Sonra view elemanlarının tanımlamasını yaptık bu tanımlamadan sonra setText'in bu listview elemanını sıfırıncı elemanı dönüyorsa birinci elemanın birinci pozisyonunda olacak
  • Sonra adapter nesnesi oluşurken cons'a, cons 1 tane list alsın bir tane de context alsın dedik
  • Daha sonra listView'imizin setAdapter'ine adp atarak İşlemimizi Bitirdik



Recycler View


Recycler View Android Studio içerisinde kurulu gelmediği için bunu nasıl Android Studio'ya ekleriz onu göstereceğim.





Nedir ?

Aynı ListView'de ki gibi bir listenin ekran da görüntülenmesini sağlayan view elemanıdı.

Çok kullanışlıdır aynı zamanda uygulamalarımza daha responsive ve güzel bir görünüm sağlar.





ListView İle Farkları

RecyclerView daha esnek bir yapıya sahiptir.

Hem yatay hem de dikey olarak konumlanan bir yapıya sahiptir.

Verilerin konumlanabilmesini yönetebilmek için Layout Manager yapısını kullanır.





RecyclerView Kütüphanesi Kurma

GradleScript İçerisinde >> build.gradle module içerisinde >> dependencies altına alttaki kodu giriyoruz.



Java:
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha05'[/B][/I][/SIZE]







RecyclerView kurulumunu da tamamlamış olduk

RecyclerView için ayrı bir konu gelecek, bu arayüz elemanı için biraz fazla uygulama yapacağız diğer konumuzda.





Okuduğunuz İçin Teşekkür Ederim İyi Forumlar :)[/CEN
Ellerine saglik
 

GECEYARASA

Üye
4 Eyl 2022
144
89
Ottoman

Uzun Aradan Sonra Android Programlama Dersine Devam Ediyoruz :)

Scrool View


Geçmiş konularda kullandığım Arayüz elemanlarını kullanarak ScroolView kullanımı göstereceğim

ScroolView Nedir ?
Yazdığımız bazı uygulamalar ekrana sığmaz bunun için scroolview kullanırız kısmen kaydırma ekranıdır.


XML İle ScroolView Oluşturma
ScroolView eklerken önemli olan bir kısım ScroolView içerisinde LinearLayout tanımlamaktır.
ScroolView içerisine sadece bir layout ekleyebiliriz ama LinearLayout İçerisine birden fazla layout ekleyebiliriz.

Birden fazla layout ekleyeceğimiz zaman android: orientation="vertical veremiz gerekir.


XML:
<ScroolView
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<LinearLayout
android:layout_width="match_parent"
android:eek:rientation="vertical"
android:layout_height="match_parent">
</LinearLayout>
</ScroolView>

#İmageVİew Ve 1 LinearLayout Daha Ekleyelim

<İmageView
android:layout_width="match_parent"
android:background="@drawable/resim adı"
android:layout_height="200dp" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:eek:rientation="horizontal" >

#Bir buton ekleyelim

<Button
android:layout_width="0dp"
android:text="1"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:layout_width="0dp"
android:text="2"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:layout_width="0dp"
android:text="3"
android:layout_height="wrap_content"
android:layout_weight="1" />
</ LinearLayout

#RadioGroup eklemeliyiz ama bunu ana layout'un içine yapmalıyız yoksa responsive olmaz

<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content
android:text="Fenerbahçe" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Galatasaray" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Beşiktaş" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Trabzonspor" />

<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Diğer" />
</RadioGroup>

#CheckBox Ve TextView tanımlayalım
#Kullandığımız TextView'in amacı iki bölümü birbirinden ayırmak için çizgi çekmek oldu.

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="-------------------------------" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PHP" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Java" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C#" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Python" />

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C" />

#Tekrar bölümleri ayırmak için TextView Ekliyoruz

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="-------------------------------" />

#EditText Ekliyoruz

<EditText
android:layout_width="match_parent"
android:hint="Yaş Gir"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>






ScrollView'in Activity ile ilgili bir işi olmadığı için bu arayüz elemanını sadece XML üstünden gösterdim.
Yaptığımız uygulamada birden fazla layout ve arayüz elemanı ekledik, mobil cihazımızın ekranı dolduğu için ScrollView yardımıyla geri kalan arayüz elemanlarını aşağı doğru hizalamış olduk.
Artık ekranımızı aşağı doğru kaydırabiliyoruz.
ScoolView yazmışım bazı yerlere dikkat edin
Doğrusu ScrollView...



List View


ListView'ler çok önemlidir bunu iyi kavramalıyız genellikle hep kullanacağımız bir arayüz elemanıdır.
Birbirleri İle İlişkili verileri tek liste halinde verebiliriz.
Aynı scrollView gibi tek parmağımızla aşşağı yukarı yaparak liste verilerine bakabiliriz.
Kendi içinde birden fazla TextView Barındıran bir arayüz elemanıdır.
Örneğin WhatsApp'de kişi listesine tıkladığımızda karşımıza çıkan sayfa bir ListView örneğidir.
Tek Block İçerisinde birden fazla Veri vardır.


XML İle ListView Oluşturma

XML:
<ListView 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/listview"> 
</ListView>
#Taha Şenlik
#TürkHackTeam




Activity Kısmına Gelip Bir Tane Model Oluşturalım Bunu Nasıl Yapacağız Derseniz ;




Resimde gördüğümüz , javanın altındaki
com.example.projeadınız > Sağ Tuş > New > Java Class > Model İsmi




Karşımıza Yukarıdaki Sayfa Gelmeli.
Burda kullanıcının hangi değerleri olmalı onları yazalım

Java:
public class KullaniciModel { 
String isim; 
String yas; 
String soyisim; 
String tim;
}
#TAHA ŞENLİK


Şimdi bir sınıf oluşturmalıyız, bu sınıfın amacı Yukardaki değişkenlere ait SET Ve GET Methodlarını barındıracak.


Java:
public String getIsim() {     
return isim; 
} 
public void setIsim(String isim) {     
this.isim = isim; 
} 
public String getYas() {     
return yas; 
} 
public void setYas(String yas) {     
this.yas = yas; 
} 
public String getSoyisim() {     
return soyisim; 
} 
public void setSoyisim(String soyisim) {     
this.soyisim = soyisim; 
} 
public String getTim() {     
return tim; 
} 
public void setTim(String tim)
{     
this.tim = tim; 
}


MainActivity.java Kısmına Geçiyoruz

Java:
public class MainActivity extends AppCompatActivity { 
List<KullaniciModel> kullaniciList; 
@Override
protected void onCreate(Bundle savedInstanceState) {     
super.onCreate(savedInstanceState);     
setContentView(R.layout.activity_main); 
} 
public void listeDoldur() 
{     
kullaniciList = new ArrayList<>(); 
}
}

Şimdi İse KullaniciModel sınıfı için constructor eklememiz lazım

KullaniciModel.java ya gidip ;

Java:
public KullaniciModel(String isim, String yas, String soyisim, String tim) { 
this.isim = isim; 
this.yas = yas; 
this.soyisim = soyisim; 
this.tim = tim;}






Tekrar MainActivity.java ya Geçiş Yapalım

Java:
public void listeDoldur()
{ 
kullaniciList = new ArrayList<>(); 
KullaniciModel k1 = new KullaniciModel("Taha", "99", "Han", "Fenerbahçe Basketbol"); 
KullaniciModel k2 = new KullaniciModel("Delta", "75", "Türk", "Takım"); 
KullaniciModel k3 = new KullaniciModel("Green", "22", "Team", "THT"); 
KullaniciModel k4 = new KullaniciModel("Tahahan", "85", "Green", "GreenTeam"); 
kullaniciList.add(k1); 
kullaniciList.add(k2); 
kullaniciList.add(k3); 
kullaniciList.add(k4);
}



Listelerimiz Eklendi.

Şimdi İse Layout Tasarımı Yapalım, Bunun İçin
res >> layout >> New >> XML >> XML Layout File
kısmına gidip finish diyoruz.




Resimde gördüğünüz gibi yenir bir layout tasarımını oluşturduk.
Yeni Layout'a Renk Ve layout_heigt Ayarı Yapıyoruz




XML:
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]" 
android:layout_width="match_parent" 
android:background="#158D4C" 
android:layout_height="wrap_content">
</LinearLayout>


XML İle LinearLayout Ve İçine TextView Ekliyoruz

XML:
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Adı : " />

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/isim" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Soyisim : " />

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/soyisim" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content"> 
<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Yaş : " /> 

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/yas" />

</LinearLayout>
<LinearLayout 
android:layout_width="match_parent" 
android:eek:rientation="horizontal" 
android:layout_height="wrap_content">

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:text="Tim : " /> 

<TextView     
android:layout_width="0dp"     
android:layout_weight="1"     
android:layout_height="wrap_content"     
android:textColor="#fff"     
android:id="@+id/tim" />
</LinearLayout>






4 List'de oluşturuldu.
Şuan ise yapacağım işlem Adapter eklemek olacak, bunu nasıl ekleyeceğiz derseniz ;






com.example.mk.projeadı >> Sağ Tuş >> New >> Java Class burdan ismi KullaniciListAdapter yaptım



Resimde gördüğünüz üzere Adapter class'ı oluşturduk.
Almamız gereken extends adlı bir sınıf var BaseAdapter ile çalışacağız o yüzden bu sınıfı kullanıyoruz.


Java:
public class KullaniciListAdapter extends BaseAdapter { 
@Override
public int getCount() {     
return 0; 
} 
@Override
public Object getItem(int i) {     
return null; 
} 
@Override
public long getItemId(int i) {     
return 0; 
} 
@Override
public View getView(int i, View view, ViewGroup viewGroup) {     
return null; 
}
}


Bir Cons oluşturuyoruz ve yukardaki kodlarda Count-Item-View kısımlarını aşşağıdaki gibi dolduruyoruz.


Java:
import java.util.List;
public class KullaniciListAdapter extends BaseAdapter {
  
List<KullaniciModel> list; 
Context context; 
public KullaniciListAdapter(List<KullaniciModel> list, Context context) 
{     
this.list = list;     
this.context = context; 
} 
@Override
public int getCount() {     
return list.size(); 
} 
@Override
public Object getItem(int position) {     
return list.get(position); 
} 
@Override
public long getItemId(int position) {     
return 0; 
} 
@Override
public View getView(int position, View convertView, ViewGroup parent) {     
View layout = LayoutInflater.from(context).inflate(R.layout.layout,parent,false);     
TextView isim = layout.findViewById(R.id.isim);     
TextView soyisim = layout.findViewById(R.id.soyisim);     
TextView  yas = layout.findViewById(R.id.yas);     
TextView tim = layout.findViewById(R.id.tim);     
isim.setText(list.get(position).getIsim());     
soyisim.setText(list.get(position).getSoyisim());     
yas.setText(list.get(position).getYas());     
tim.setText(list.get(position).getTim());     
return layout; 
}
}


MainActivity.java içindeki kod bloguna


public class MainActivity extends AppCompatActivity {
    List<KullaniciModel> kullaniciList;
    #BURAYA 1

    [USER=931120]@Override[/USER]
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        #BURAYA 2
    };
    }

#BURAYA1  Kısmına

KullaniciListAdapter adp;
ListView listView;

#BURAYA 2 Kısmına

listeDoldur();
tanimla();

public void listeDoldur()
{ 
kullaniciList = new ArrayList<>(); 
KullaniciModel k1 = new KullaniciModel("Taha", "99", "Han", "Fenerbahçe Basketbol"); 
KullaniciModel k2 = new KullaniciModel("Delta", "75", "Türk", "Takım"); 
KullaniciModel k3 = new KullaniciModel("Green", "22", "Team", "THT"); 
KullaniciModel k4 = new KullaniciModel("Tahahan", "85", "Green", "GreenTeam"); 
kullaniciList.add(k1); 
kullaniciList.add(k2); 
kullaniciList.add(k3); 
kullaniciList.add(k4);

#BURAYA 3
}

#BURAYA 3 Kısmına







Java:
adp = new KullaniciListAdapter(kullaniciList, this);
listView.setAdapter(adp);


MainActivity.java nın en altında;


Java:
void tanimla(){    listView = findViewById(R.id.listview);}[/B][/I][/SIZE]




Sonuç Olarak Kodlarımız Şu an Çalışır Hale Geldi.



Neler Yaptık ?


  • Önce XML tarafında bir tane ListView oluşturduk
  • Sonra ListView'imizin her bir item'ine ait bir layout olacak
  • Bu Layout'da temel bilgiler içerecek
  • Daha sonra model Class'ı oluşturup nesnelerini oluşturduk ve bu nesneleri bizim kullanıcı listemize atadık.
  • Adapter oluşturduk adapter de list ve context aldık context almamızın sebebi ise oluşturudğumuz layout.xml tasarımına ulaşmak için.
  • Daha sonra layout.xml'e ulaştık.
  • Sonra view elemanlarının tanımlamasını yaptık bu tanımlamadan sonra setText'in bu listview elemanını sıfırıncı elemanı dönüyorsa birinci elemanın birinci pozisyonunda olacak
  • Sonra adapter nesnesi oluşurken cons'a, cons 1 tane list alsın bir tane de context alsın dedik
  • Daha sonra listView'imizin setAdapter'ine adp atarak İşlemimizi Bitirdik



Recycler View


Recycler View Android Studio içerisinde kurulu gelmediği için bunu nasıl Android Studio'ya ekleriz onu göstereceğim.





Nedir ?

Aynı ListView'de ki gibi bir listenin ekran da görüntülenmesini sağlayan view elemanıdı.

Çok kullanışlıdır aynı zamanda uygulamalarımza daha responsive ve güzel bir görünüm sağlar.





ListView İle Farkları

RecyclerView daha esnek bir yapıya sahiptir.

Hem yatay hem de dikey olarak konumlanan bir yapıya sahiptir.

Verilerin konumlanabilmesini yönetebilmek için Layout Manager yapısını kullanır.





RecyclerView Kütüphanesi Kurma

GradleScript İçerisinde >> build.gradle module içerisinde >> dependencies altına alttaki kodu giriyoruz.



Java:
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha05'[/B][/I][/SIZE]







RecyclerView kurulumunu da tamamlamış olduk

RecyclerView için ayrı bir konu gelecek, bu arayüz elemanı için biraz fazla uygulama yapacağız diğer konumuzda.





Okuduğunuz İçin Teşekkür Ederim İyi Forumlar :)[/CEN
eline sağlık yararlı
 

deltaturk

Katılımcı Üye
26 Kas 2020
925
976
Green Team Mersin Daire Bşk.
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.