2016-03-23 27 views
-1

'daki tüm öğelerin metninden nasıl alırsınız? Birkaç TextViews, EditViews ve bir Düğme ile bir görünümüm var. Tüm öğeler arasında yineleme yapmak ve her bir öğenin metin değerini almak istiyorum. Kullanıcının ekranda yaptığı şeylere bağlı olarak, ekranda hangi öğelerin göründüğüne bağlı olarak, her bir isimle başlayamıyorum. Ve her seferinde farklı sayıda öğe olabilir. Öğeleri dinamik olarak oluşturuyorum ve her bir metin görünümünün metnini ayarladım, ancak kullanıcı düzenleme görünümüne bilgi girecek. Bu yüzden sadece metin görünümündeki metni değil, kullanıcının düzenleme görünümüne koyduğu metni bilmem gerekiyor ve kullanıcı girdisinin doğru metin görünümüne gittiğinden emin olmam gerekiyor. Yani "2x2" yazan ve "4" yazan bir metin görüntüm varsa, 4'ün 2x2 metin görünümüne gittiğinden emin olmam gerekir. Bakmaya nereden başlayacağımı bilmiyorum, hiçbir şey denemedim. Eğer birisi beni doğru yönde gösterebilirse, bu iyi olur. Bu arada, bu ev ödevi değildir. Hala üzerinde çalıştığım aynı uygulama haftalardır beni yok ediyor. Teşekkürler.Düzeni

+0

Bir görüntüleme grubu kullanın (LinearLayout, RelativeLayout ..) ve bu iletide açıklanan for döngüsüyle tüm çocukları alın. http://stackoverflow.com/questions/7784418/get-all-child-views-inside-linearlayout-at-once – uguboz

cevap

0

Çocuklar üzerinde yineleme yapabilir ve sonra sınıf tiplerini kontrol edebilirsiniz.

// you need the ID of the layout - in this example the ID is myLayout 
// or you get the layout object instance otherwise 
LinearLayout layoutMyLayout = (LinearLayout) findViewById(R.id.myLayout); 
if (layoutMyLayout != null) 
{ 
    for (int i = 0; i < layoutMyLayout.getChildCount(); x++) 
    { 
    View viewChild = layoutMyLayout.getChildAt(i); 
    if (viewChild instanceof EditText) 
    { 
     // get text from edit text 
     String text = ((EditText)viewChild).getText().toString(); 
     //TODO: add rest of the logic 
    } else if(viewChild instanceof TextView) { 
     // get text from text view 
     String text = ((TextView)viewChild).getText().toString(); 
     //TODO: add rest of the logic 
    } 
} 

Yalnızca örneğe gereksiniminiz var ve oradan postalanan yöntemlere sahipsiniz. Oldukça düz ileri.

+0

Eğer "instanceof" yi kullanıp daha sonra sınıf ismini karşılaştırmak için koşulu değiştirdim. Bağlantıyı kaldırmamın nedeni de bu, çünkü bence bu daha da iyi. –

+0

Teşekkürler. Ben deneyeceğim ve size bildireceğim. – vbneil54

+0

@ vbneil54 trick mi yaptı? –