2015-07-25 8 views
5

İki gün boyunca bu problemle uğraşıyorum ve hala bir çözüm bulamıyorum, sanırım temel bilgi birikimim zayıf.Bir dizide Metin Görünümleri nasıl yerleştirilir ve bunları FindViewById nasıl bulunur?

Şimdi yaklaşık yirmi TextView ilan ettim ve bilmek istiyorum TextView bir diziye ve findViewById bunları depolamak için bir yolu var mı?

bu gibi bir dizi kullanmak çalıştı:

public class MainActivity extends Activity { 

private TextView name, address; 
LinkedHashMap<Integer, TextView> demo = new LinkedHashMap<>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    int temp; 
    allTextview = new TextView[]{name, address}; 
    for(int i=0; i<allTextview.length; i++){ 
     temp = getResources().getIdentifier(allTextview[i], "id", getPackageName()); 
     allTextview[i] = (TextView)findViewById(temp); 
    } 
}} 

Bu yöntem neden "ad" ve "allTextview [0]" aynı nesneye işaret değildir. Aynı zamanda this solution kullanıyorum, ama yine de aynı.

Sanırım "isim" ve "adres" nedeni açıklandı ve henüz herhangi bir nesneye işaret etmedi, nasıl çözebilirim?

Döngü için findViewById kullanmak istiyorum ve TextView ile bir şeyler yapmak için hem "ad" hem de "allTextview [0]" kullanabilirsiniz.

Yardımınız için teşekkürler ve lütfen kötü İngilizce'm için özür dilerim.

+0

Sadece ilk denemek ve isim, adres için kimlik atayın File ... 'name.setId (int)' – MKJParekh

+0

Neden öyle mi olduğunu Böyle bir TextViews Arrayını başlatmak istiyor musunuz? Böyle bir şey yapmak için daha basit/daha verimli olmaz: int [] ids = new int [] {R.id.nameTextView, R.id.addressTextView} 've sonra için (int i = 0; i < id.length; i ++) {allTextViews [i] = (TextView) findViewById (ids [i]);} –

cevap

3

Yapmanız gereken şey, getIdentifier için kullanmak üzere farklı bir String dizesi almaktır. İşte

XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/name" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Name"/> 

    <TextView 
     android:id="@+id/address" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Address"/> 

</LinearLayout> 

Ve Aktivite Yok

public class TestActivity extends Activity{ 

    private String[] id; 
    private TextView[] textViews = new TextView[2]; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.testactivity); 

     int temp; 
     id = new String[]{"name", "address"}; 

     for(int i=0; i<id.length; i++){ 
      temp = getResources().getIdentifier(id[i], "id", getPackageName()); 
      textViews[i] = (TextView)findViewById(temp);   
      textViews[i].setText("Text Changed"); 
     } 
    } 
+0

Hedefime ulaşmanın en kolay yolu, tekrar teşekkürler. –

İlgili konular