Anasayfa » Android, Java ve Java Teknolojileri

Android Programlama – TableLayout, Radio Button

1 Temmuz 2012 12.101 kez okundu Yorum yok
1 Star2 Stars3 Stars4 Stars5 Stars (3 oy,5 üzerinden : 5,00 )
Loading ... Loading ...

Merhaba arkadaşlar, bu yazımızda daha önceki yazımızda geliştirdiğimiz form uygulamasını biraz daha geliştireceğiz. Bu uygulamamızda bir önceki uygulamaya table layout ve radio button ekleyeceğiz. Bir önceki yazımızı okumayanlar buradan okuyabilir.  Okumak istemeyenler bir önceki uygulamayı indirip üzerinde devam edebilirler.

Radio button ları kitap cinsini seçmek için kullanacağız. Table layoutu ise daha düzgün bir form yapısı için kullanacağız.

İlk olarak projemizde res/layout/main.xml dosyamızı şu şekilde değiştiriyoruz.

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1"
>
<TableRow >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="İsmi:"
/>
<EditText android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Yazar:"
/>
<EditText android:id="@+id/author"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<Button android:id="@+id/save"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Kaydet"
/>
</TableLayout>

Burada linear layout yerine table layout ve table row kullanacağız.

Programımızı bu şekilde çalıştırdığımızda elemanları daha düzene girmiş halde  bulacağız.

Burada dikkat ederseniz, EditText ler labellerden hemen sonra geliyor.

Eğer bu noktada hata ile karşılaşırsanız, Project->Clean yolunu izleyerek mevcut projeyi temizleyin. Böylece gerekli dosyalar tekrar oluşturulacak ve hataya neden olan satırlar silinecektir.

Şimdi programımıza kitabımızın türünü seçebileceğimiz radio button ları ekleyelim.

Bunun için öncelikle main.xml dosyamızı düzenliyoruz.

 
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1"
>
<TableRow >
	<TextView
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="İsmi:"
	/>
	<EditText android:id="@+id/name"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	/>
	</TableRow>
<TableRow >
	<TextView
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="Yazar:"
	/>
	<EditText android:id="@+id/author"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	/>
</TableRow>
<TableRow>
	<TextView android:text="Cinsi:" />
	<RadioGroup android:id="@+id/types">
	<RadioButton android:id="@+id/adventure"
	android:text="Adventure"
	/>
	<RadioButton android:id="@+id/biography"
	android:text="Biography"
	/>
	<RadioButton android:id="@+id/documentary"
	android:text="Documentary"
	/>
	</RadioGroup>
</TableRow>
	<Button android:id="@+id/save"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="Kaydet"
	/>
</TableLayout>

ve çalıştırdığımızda radio button larımızın tableLayout daki yerini görebiliyoruz.

Eklediğimiz radio buttonlara göre model dosyamızı tekrar düzenlememiz gerekiyor. Bunun için private String type şeklinde değişken ekliyoruz ve bunun  getter ve setter fonksiyonlarını yazıyoruz. Son değişikliklerle birlikte, model dosyamız şu görünüme sahip oluyor.

package kodmerkezi.net.basitForm;
 
public class Book {
	private String name="";
	private String author="";
	private String type="";
 
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
 
}

Son olarak yapmamız gereken kaydet butonuna tıklandığında, elde ettiğimiz seçeneği model dosyamıza yazmak olacak. Bunun için BasitFormActivity.java dosyamızda şu değişiklikleri yapıyoruz.

package kodmerkezi.net.basitForm;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
 
public class BasitFormActivity extends Activity {
 
	Book  b = new Book();
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        Button save = (Button)findViewById(R.id.save);
        save.setOnClickListener(onSave);
    }
 
    private View.OnClickListener onSave = new View.OnClickListener() {
 
		public void onClick(View v) {
			EditText name =  (EditText)findViewById(R.id.name);
			EditText author = (EditText)findViewById(R.id.author);
 
			b.setName(name.getText().toString());
			b.setAuthor(author.getText().toString());
 
			RadioGroup types=(RadioGroup)findViewById(R.id.types);//radio buttonlardan seçeneği alıyoruz
 
			//aldığımız seçenği switch ile ilgili şekilde kaydediyoruz.
			switch (types.getCheckedRadioButtonId()) {
			case R.id.adventure:
				b.setType("adventure");
				break;
			case R.id.biography:
				b.setType("biography");
				break;
			case R.id.documentary:
				b.setType("documentary");
				break;
			}
		}
 
	};
}

Burada dikkat etmemiz gereken nokta android.widget.RadioGroup u import etmeyi unutmamak. Eğer radio buttonlardan herhangi birini seçmez iseniz. types.getCheckedRadioButtonId() değer olarak -1 döndürecektir. Bu yüzden bir seçeneğin default olarak seçili olmasını istiyorsak  android:checked = “true” ifadesini kullanmalıyız.

<RadioButton android:id="@+id/adventure"
	android:text="Adventure"
	android:checked="true"
	/>

Eğerki xml dosyasında değilde kendimiz java dosyası içerisinde radio button eklemek istersek(çünkü radio buttonların sayısı bir değer bağlı olabilir veya database den çekiliyor olabilir)   RadioButton dan bir obje yaratıp bunu addView() fonksiyonu ile RadioGroupa bağlamamız gerekiyor.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        //dinamik olarak java kodlarıyla radio button ekleme
        RadioGroup radioGroup =(RadioGroup)findViewById(R.id.types);        
        RadioButton rb = new RadioButton(getBaseContext());
        rb.setText("Other");
     	radioGroup.addView(rb);
 
        Button save = (Button)findViewById(R.id.save);
        save.setOnClickListener(onSave);
    }

Eğer çok fazla radio button eklersek ekranın altında kalanları göremeyeceğiz. Bu yüzden sürükleme işlevini kazandırmamız gerekiyor. Bunun  için ScrollView container kullanacağız.

xml kodumuz şu hali alacak, başına ve sonuna scrollView ekliyorum

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1"
>
<TableRow >
	<TextView
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="İsmi:"
	/>
	<EditText android:id="@+id/name"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	/>
	</TableRow>
<TableRow >
	<TextView
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="Yazar:"
	/>
	<EditText android:id="@+id/author"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	/>
</TableRow>
<TableRow>
	<TextView android:text="Cinsi:" />
	<RadioGroup android:id="@+id/types">
	<RadioButton android:id="@+id/adventure"
	android:text="Adventure"
	android:checked="true"
	/>
	<RadioButton android:id="@+id/biography"
	android:text="Biography"
	/>
	<RadioButton android:id="@+id/documentary"
	android:text="Documentary"
	/>
	</RadioGroup>
</TableRow>
	<Button android:id="@+id/save"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="Kaydet"
	/>
</TableLayout>
</ScrollView>

Bu yazımızda table layout, radio button, dinamic view (radio button)ekleme, ve scrollView özelliklerini tanıdık. Sonraki yazılarımızda projemizi geliştirmeye devam edeceğiz, takip etmeye devam edin.

Projenin kaynak kodlarını buradan indirebilirsiniz.

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

Yorum Bırakın!

Yorum yaz, yada kendi sitende trackback (Geri besleme) olarak ekle. Ayrıca RSS ile bu konuya üye olabilirsin. .

Nazik olun. Temiz tutun. Konu dışına çıkmayın. Spam yaratmayın.

Bu tagları kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bloğumuz gavatarı desteklemektedir. Kendi gavatarınızı edinmek için lütfen Gravatar a üye olun.