Android de activity de tableLayout var. Bunun içersinde 8 tane tableRow var. 8 tane de kolon. 64 tane cell olmuş oluyor. Bu hücrelerin içersine textview koydum. Herhangi bir hücre içersindeki textview ı tıkladığım zaman o hücrelerin kolon ve sütün değerlerini nasıl alabilirim? Örnek olarak, 5:6 şeklinde ise 5.satır 6.kolon gibi.

soruldu: 24 Nis '13, 09:18

emax_64's gravatar image

emax_64
64590102101
cevap kabul oranı: 20%

değiştirildi: 24 Nis '13, 09:24


TextView'ları dinamik mi yoksa elle mi tek tek eklediniz?

Eğer elle eklediyseniz mutlaka bir id vermiş olmanız gerekir. ID değeri üzerinden yakalayabilirsiniz.

android:id="@+id/txt-1-1" , android:id="@+id/txt-1-2" .... şeklinde elle ID degeri verdiğinizi varsayıyorum. Burada txt-satir-sutun şeklinde bir isimlendirme yapılabilir ama bunun içinde ekstra her hücre için onclickListener yazmanız gerekiyor !

Dinamik olarak ekranda textView ataması yapmanız daha yararlı olacaktır.

public class Hucre extends TextView{
   .......
}

 private TableLayout table;

private Hucre hucre[][];    
private int hucreBoyu; 
private int hucrePadding;

private int hucreSatir;
private int hucreSutun;

for (int satir = 0; satir < hucreSatir; satir++){
     for (int sutun = 0; sutun < hucreSutun; sutun++){

        hucre[satir][sutun] = new Hucre(this);

    hucre[satir][sutun].setOnClickListener(new OnClickListener(){
         @Override
         public void onClick(View view)
         {
                hucre[satir][sutun].setText(satir + sutun); 
        });
    }
}
}

Ekrana basma kısmı kalıyor en son,

for (int satir = 1; satir < hucreSatir + 1; satir++)
        {
            TableRow tableRow = new TableRow(this);  
            tableRow.setLayoutParams(new LayoutParams((hucreBoyu + 2 * hucrePadding) * hucreSutun, hucreBoyu + 2 * hucrePadding));

            for (int sutun = 1; sutun < hucreSutun + 1; sutun++)
            {
                hucre[satir][sutun].setLayoutParams(new LayoutParams(hucreBoyu + 2 * hucrePadding, hucreBoyu + 2 * hucrePadding)); 
                hucre[satir][sutun].setPadding(hucrePadding, hucrePadding, hucrePadding, hucrePadding);
                tableRow.addView(hucre[satir][sutun]);
            }
            table.addView(tableRow,new TableLayout.LayoutParams((hucreBoyu + 2 * hucrePadding) * hucreSutun, hucreBoyu + 2 * hucrePadding));  
        }
permanent link

cevaplandı: 24 Nis '13, 18:31

MDemir's gravatar image

MDemir
2.1k173445
cevap kabul oranı: 24%

değiştirildi: 24 Nis '13, 18:33

Bu kontrolleri dinamik olarak mı oluşturacaksın? Öyleyse bence textView tipinden çift boyutlu bir dizide tut kontrol referanslarini kolay erişim ve kullanım açısından, istediğin bilgileri de textView.setTag(object) metoduyla kontrole atayip, click olayında textView.getTag() metoduyla alabilirsin. Yine satir sütün bilgisi almak içinde tiklanan kontrolü parametre geç bir metoda, o metotda yukarda belirtilen çift boyutlu dizi içinde arama yapsın sonuç döndürsün

permanent link

cevaplandı: 24 Nis '13, 10:50

gturedi's gravatar image

gturedi
2.8k41538
cevap kabul oranı: 26%

hayır dinamik oluşturmuycam. Sabit bir şekilde olacak. Ben sadece yukarıdaki bahsettiğim gibi tıklanılan textview neredeyse oranın bilgisine ulaşmak istiyorum. Yazdıklarınızı buna göre düzenleyebilir misiniz?

(24 Nis '13, 10:55) emax_64 emax_64's gravatar image

64'tane hücreyi bence döngüye girip dinamik oluşturmalısınız, amacanızı bilmiyorum ama çok uğraştırır gibi duruyor. İlla design-time'da oluşturacaksanız: <button android:id="@+id/b1x1 // ayni amacla id bile kullanilabilir goruldugu gibi android:tag=" 1:1"="" satir:sutun="" gibi="" android:text="login"/>

(24 Nis '13, 11:21) gturedi gturedi's gravatar image

onClickListener metodu ile tıklanan değere ulaşılabilir.

tableRow.setOnClickListener(new View.OnClickListener() {
     @Override   
     public void onClick(View view) {
      TableRow t = (TableRow) view;
    }
}

gibi bir şey olmsı gerekiyor. Özellikle OnClickListener metodunu yazarken intellisense mükemmel çalışıyor :)

permanent link

cevaplandı: 24 Nis '13, 12:36

Turgay%20Can's gravatar image

Turgay Can
8.3k63798
cevap kabul oranı: 18%

burada tablerow a tıklama olayını yazmışsınız ancak ben hücre içersindeki kontrole tıklanıldığı zaman nasıl alırız bunu öğrenmek istiyorum.

(24 Nis '13, 13:25) emax_64 emax_64's gravatar image

Hücrenin içindeki kontrol'un setOnClickListener olayını çağırın aynı şekilde.

textview.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) { //todo } }

Android'de component^ların listener'ları aynı genelde. Test etmedim, sadece fikir oluşturması için yazdım. Ama mutlak vardır listenerı bu şekilde.

(24 Nis '13, 13:37) Turgay Can Turgay%20Can's gravatar image

listener olayını biliyorum orada sıkıntı yok. Peki bu bulunan kontrolün hangi hücrede olduğunu nasıl bulabiliriz?

(24 Nis '13, 13:48) emax_64 emax_64's gravatar image

xml tarafinda android:onClick="tiklama" olarak ata textView'leri. kod tarafinda public void tiklaa(View view) { // burda "view" üzerine tıklanan textView kontrolüdür, istediğini yapabilirsin bununla }

(24 Nis '13, 13:49) gturedi gturedi's gravatar image

arkadaşlar verdiğiniz bilgiler için çok tşkler. Ancak benim istediğim tam olarak şu, TableLayout üzerinde 64 tane hücre var. Bunların içersinde de textview var. Bu textview ların ger hangi birine tıklanıldığında o textview ın hangi kolon ve hangi sutun da bulunduğunu nasıl bulabilirim?

(24 Nis '13, 14:07) emax_64 emax_64's gravatar image

belirttiğim gibi. tikla metodu içinde String tag = view.getTag().toString() //2:2 gibi bir değer verecek, artık sen xml icinde tag'i ne olarak set etmişsen

(24 Nis '13, 14:10) gturedi gturedi's gravatar image
6 yorumdan 5 tanesi gösteriliyor hepsini göster
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×818

Soruldu: 24 Nis '13, 09:18

Görüntüleme: 609 kez

Son güncelleme: 24 Nis '13, 18:33

powered by BitNami OSQA