2010-10-10 11 views
13

से संलग्न करने के लिए मैं एक ViewGroup एक दृश्य के अंदर के साथ एक्सएमएल में परिभाषित किया गया, onCreate समय में मैं उन लोगों में से एक चर राशि करना चाहते हैं।
मैं एक सूचीदृश्य + एडाप्टर का उपयोग करने की परेशानी से गुजरना नहीं चाहता क्योंकि यह स्पष्ट रूप से ओवरकिल है क्योंकि मुझे पता है कि सूची चालू नहीं होगी क्योंकि क्रिएट()
यह कोड जितना कम या कम है ।क्लोन TextView एक ViewGroup

TextView mytextview = myViewGroup.findViewById(R.id.mytext); 

for(String test : strings){ 
    mytextview = mytextview.clone(); 
    mytextview.setText(test); 
    myViewGroup.addView(mytextview); 
} 

लेकिन यह काम नहीं कर रहा है।

+0

वर्तमान परिणाम आपके हो रही है? MyTextView केवल एक बार दिखाई देता है? –

+0

मैं एक जवाब यहाँ http://stackoverflow.com/a/15761866/884674 देखें कि क्या वह आपके लिए काम करती जोड़ लिया है। –

उत्तर

19

हो सकता है कि एक inflater उपयोग करते हैं, और एक बाहरी लेआउट फ़ाइल में TextView डाल:

View v = LayoutInflater.from(this).inflate(R.layout.textview_include, null); 
viewGroup.addView(v); 
+1

अगर मैं inflater का उपयोग नहीं कर सकता तो मुझे क्या करना चाहिए? – suitianshi

1

आप ऐसा करते हैं, तो आप सबसे अधिक संभावना है ठीक उसी आईडी इस तरह से बनाई गई प्रत्येक दृश्य के लिए मिल जाएगा। इसका मतलब है (जैसे टेक्स्ट व्यू) v) .setText ("कुछ पाठ"); पहले उसी लेआउट से फुले गए प्रत्येक टेक्स्ट व्यू पर कॉल किया जाएगा। आप इसे अभी भी कर सकते हैं, लेकिन आपको setId() को कॉल करना चाहिए और यह सुनिश्चित करने के लिए कुछ उचित तरीका है कि आपको एक ही आईडी को पंक्ति में दो बार नहीं मिला - वृद्धि या सार्वभौमिक समय, आदि

इसके अलावा, मुझे लगता है कि एंड्रॉइड गतिशील रूप से बनाई गई आईडी के लिए आईडी की एक निश्चित सीमा को आरक्षित करता है। आप इस सीमा में आईडी से बच सकते हैं; लेकिन ईमानदारी से, मुझे नहीं पता कि आईडी सिस्टम काम करता है इसलिए मैं इस बिंदु पर गलत हो सकता था।

0

मैथियास लिन के कोड का उपयोग करना और javahead76 से संकेत का उपयोग कर:

LinearLayout x = (LinearLayout) findViewById(R.id.container); 

    for (int i = 0; i < 5; i++) { 
     View c = LayoutInflater.from(this).inflate(R.layout.singlerow, x); 
     TextView t = ((TextView)findViewById(R.id.textView1)); 
     t.setId(i+10000); 
     t.setText("text"+i);    
    } 
    TextView b = (TextView) findViewById(10003); 
    b.setText("10003"); 
+1

'for' loop के अंत में' findViewById' का उद्देश्य क्या है? वह फ़ंक्शन आईडी '0' से' 4' (आपके मामले में) के लिए 'व्यू' देता है, लेकिन आप इसे कहीं भी उपयोग नहीं करते हैं। –

+0

@ पिंप Trizkit आप सही हैं मैं इसे हटाने के लिए भूल गया। यह पुराना कोड है। –

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