2010-05-31 13 views
8

मैं 16 textViews है और इस तरह यह किया कुछ निर्धारित करने की आवश्यकता:मैं आरजेवा कक्षा के आईडी गुणों के माध्यम से कैसे पुन: प्रयास करूं?

for (int i=1; i<6; i++) 
{ 
    int $RidInt = R.id.s; 
    tv[i] = (TextView)findViewById($RidInt); 
    tv[i].setTypeface(face); 
    tv[i].setClickable(true); 
    tv[i].setOnClickListener(clickListener); 
} 

मेरी R.java फ़ाइल है:

public final class R { 
    public static final class attr { 
    } 
    public static final class drawable { 
     public static final int icon=0x7f020000; 
    } 
    public static final class id { 
     public static final int s1=0x7f050000; 
     public static final int s10=0x7f050009; 
     public static final int s11=0x7f05000a; 
     public static final int s12=0x7f05000b; 
     public static final int s13=0x7f05000c; 
     public static final int s14=0x7f05000d; 
     public static final int s15=0x7f05000e; 
     public static final int s16=0x7f05000f; 
     public static final int s2=0x7f050001; 
     public static final int s3=0x7f050002; 
     public static final int s4=0x7f050003; 
     public static final int s5=0x7f050004; 
     public static final int s6=0x7f050005; 
     public static final int s7=0x7f050006; 
     public static final int s8=0x7f050007; 
     public static final int s9=0x7f050008; 
    } 
    public static final class layout { 
     public static final int main=0x7f030000; 
     public static final int toast=0x7f030001; 
    } 
    public static final class string { 
     public static final int app_name=0x7f040000; 
     public static final int s2=0x7f040001; 
    } 
} 

उत्तर

13

कुछ इस तरह?

import java.lang.reflect.Field; 
/* ... */ 

for (int i = 1; i < 16; i++) { 
    int id = R.id.class.getField("s" + i).getInt(0); 
    tv[i] = (TextView)findViewById(id); 
    tv[i].setTypeface(face); 
    tv[i].setClickable(true); 
    tv[i].setOnClickListener(clickListener); 
} 
+0

बिल्कुल सही! वह काम किया। धन्यवाद। –

+0

वास्तव में अच्छा काम। !! किसी कारण से – MKJParekh

+0

मुझे एक कोशिश/पकड़ ब्लॉक जोड़ने की आवश्यकता है - लेकिन खूबसूरती से काम करता है! वैसे भी कोशिश/पकड़ने से बचने के लिए? – Jona

2

इस प्रयास करें।

public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.main); 
      LinearLayout ll = (LinearLayout) findViewById(R.id.LinearLayout01); 
      for (int i = 0; i < ll.getChildCount(); i++) { 
       ((TextView) ll.getChildAt(i)).setText("Text View " + i); 
      } 
+0

मुझे लगता है कि यदि सभी नहीं बच्चे textviews – RoflcoptrException

+0

mgpyone पूछा, "मैं 16 textViews है और यह किया की तरह कुछ निर्धारित करने की आवश्यकता:" कर रहे हैं इस CastingExpcetions का एक बहुत फेंक देते हैं। आप सभी टेक्स्टव्यू को एक रैखिक लेआउट में रख सकते हैं। और मैं सिर्फ एक संकेत है कि यह भी एक तरह से आवश्यकता प्राप्त करने के लिए दे रहा हूँ। – Vivart

2

मुझे एक कोशिश/पकड़ रैपर में मेरा लपेटना पड़ा, यकीन नहीं कि क्यों, लेकिन मैं बहुत नया हूं।

for (int counter = 1; player < 5; counter++) { 
     try {Field field = example.main.R.id.class.getField("s" + counter); 
      try {screenid = field.getInt(null);} 
      catch (IllegalAccessException e){//exceptioncodehere} 
     catch (NoSuchFieldException e) {//exception2codehere} 
     TextView SetMe = (TextView)findViewById(screenid); 
     SetMe.setText("Text" + player);}} 
संबंधित मुद्दे

 संबंधित मुद्दे