2016-11-18 3 views
-2

MainActivity.javaconvertir la chaîne "R.id.text1" int id TextView

for(int i=1;i<=2;i++) 
     { 
      String commonId="R.id.text"; 
      final int index=i-1; 
      commonId=commonId+i; 
      Log.e("MSG",index+" "+commonId); 

     Integer id= getResources().getIdentifier(commonId, "id", getPackageName()); 

      TextView day=(TextView)daysView.findViewById(R.id.text1); 
      Log.e("MSG",id+" "+day +" "+commonId); 
} 

R.layout.picker

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="45dp" 
    android:gravity="center_horizontal" 
    android:layout_marginTop="10dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp"> 

    <TextView 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:id="@+id/text1" 
     android:text="MON" 
     android:textStyle="bold" 
     android:textColor="#000000" 
     android:gravity="center_vertical|center_horizontal" 
     android:background="@drawable/circle_shape"/> 

    <TextView 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:id="@+id/text2" 
     android:text="TUE" 
     android:textStyle="bold" 
     android:textColor="#000000" 
     android:layout_alignLeft="@+id/text" 
     android:gravity="center_vertical|center_horizontal" 
     android:layout_marginLeft="70dp" 
     android:background="@drawable/circle_shape"/> 

    <TextView 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:id="@+id/text3" 
     android:text="WED" 
     android:textStyle="bold" 
     android:textColor="#000000" 
     android:layout_alignLeft="@+id/text2" 
     android:gravity="center_vertical|center_horizontal" 
     android:layout_marginLeft="70dp" 
     android:background="@drawable/circle_shape"/> 

    <TextView 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:id="@+id/text4" 
     android:text="THU" 
     android:textStyle="bold" 
     android:textColor="#FFFFFF" 
     android:layout_alignLeft="@+id/text3" 
     android:gravity="center_vertical|center_horizontal" 
     android:layout_marginLeft="70dp" 
     android:background="@drawable/button_shape_select_category"/> 

</RelativeLayout> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="45dp" 
    android:gravity="center_horizontal" 
    android:layout_marginTop="10dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp"> 

    <TextView 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:id="@+id/text5" 
     android:text="FRI" 
     android:textStyle="bold" 
     android:textColor="#000000" 
     android:gravity="center_vertical|center_horizontal" 
     android:background="@drawable/circle_shape"/> 

    <TextView 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:id="@+id/text6" 
     android:text="SAT" 
     android:textStyle="bold" 
     android:textColor="#000000" 
     android:layout_alignLeft="@+id/text5" 
     android:gravity="center_vertical|center_horizontal" 
     android:layout_marginLeft="70dp" 
     android:background="@drawable/circle_shape"/> 

    <TextView 
     android:layout_width="45dp" 
     android:layout_height="45dp" 
     android:id="@+id/text7" 
     android:text="SUN" 
     android:textStyle="bold" 
     android:textColor="#FFFFFF" 
     android:layout_alignLeft="@+id/text6" 
     android:gravity="center_vertical|center_horizontal" 
     android:layout_marginLeft="70dp" 
     android:background="@drawable/button_shape_select_category"/> 
</RelativeLayout> 

Log impression

0 null R.id.text1 
0 null R.id.text2 

Ce " sélecteur "vue est gonflé dans Activité.

J'ai essayé ceci pour des dossiers "drawable" et cela fonctionne mais pas pour obtenir des ids de vue. J'ai cherché partout c'est la syntaxe mais ne fonctionne pas ici. le package de l'application est com.myexample.app et l'activité est dans le package com.myexample.app.Activities. Je ne veux pas écrire 7 écouteurs de clic sur textView donc je veux faire en boucle.

Répondre

1

changer simplement ce

String commonId="R.id.text"; 

à cette

String commonId="text"; 
+0

travaillé, erreur stupide – Shivam

+0

Mon plaisir de vous aider. –

0

essayer de faire comme ça,

for (int i=0; i<7; i++) { 
    int resId = getResources().getIdentifier("text" + i, "id", getPackageName()); 
    TextView textView = (TextView) view.findViewById(resId); 
} 
+1

Qu'est-ce que cette réponse ajoute à la mienne? –

+0

Ne pas utiliser 'R.id.text', Il suffit d'utiliser 'texte' –

+1

Ce qui est exactement ce que je suggère ... –