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