दिलचस्प पोस्ट
मैं एपीपीनेट एमवीसीएल में एचटीटीपीकॉन्टेक्स कैसे मॉक का उपयोग कर रहा हूं? ऐप्पल इंटरफ़ेस बिल्डर: यूआईएमएजेव्यू में सबव्यू को जोड़ना अग्रभूमि (स्टैक के ऊपर) को कैसे गतिविधि लाया जाए? कैसे एक git एक हटाए जाने के लिए और एक फ़ाइल चाल के रूप में एक नई फ़ाइल को चिह्नित करने के लिए? std :: chrono :: high_resolution_clock का संकल्प माप के अनुरूप नहीं है एचएमएसी-एसएचए 1 के लिए उद्देश्य-सी नमूना कोड पीएचपी का उपयोग कर सर्वर पर छवि अपलोड करते समय डेटाबेस में फ़ाइल नाम को कैसे स्टोर करना है? एएसपी.नेट एमवीसी में देखेंबैग कैसे काम करता है वितरण, दुर्गों, सेटअपटोल्टों और डिस्टुट 2 के बीच मतभेद? क्या asp.net के बाहर रेज़र व्यू इंजन का उपयोग करना संभव है इनपुट के अंदर बटन कैसे जोड़ें जावा नियमित अभिव्यक्ति और डॉलर का चिह्न लुआ टेबल में प्रविष्टियों की संख्या कैसे प्राप्त करें? ओपनसीवी एक 2 डी हिस्टोग्राम खींच रहा है एएसपी.नेट एमवीसी – सभी रूट और डिफॉल्ट रूट को पकड़ो

एंड्रॉइड – दृश्य में गतिशील रूप से दृश्य जोड़ें

मेरे पास एक दृश्य के लिए एक लेआउट है –

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="0px" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/items_header" style="@style/Home.ListHeader" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/items_none" android:visibility="gone" style="@style/TextBlock" android:paddingLeft="6px" /> <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/items_list" /> </LinearLayout> 

मैं क्या करना चाहता हूं, मेरी मुख्य गतिविधि इस तरह एक लेआउट के साथ है

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="0px" android:id="@+id/item_wrapper"> </LinearLayout> 

मैं अपने डेटा मॉडल के माध्यम से पाश करना चाहता हूं और मुख्य लेआउट में पहले लेआउट से मिलकर कई दृश्य पेश करता हूं। मुझे पता है कि मैं कोड के भीतर पूरी तरह से नियंत्रण बनाकर ऐसा कर सकता हूं, लेकिन मैं सोच रहा था कि क्या गतिशील रूप से विचारों का निर्माण करने का एक तरीका है, ताकि मैं कोड में सब कुछ डाल करने के बजाय एक लेआउट का उपयोग जारी रख सकूं।

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड – दृश्य में गतिशील रूप से दृश्य जोड़ें"

अपने लेआउट टेम्प्लेट के आधार पर लेआउट LayoutInflater का उपयोग करें, और उसके बाद उसे इसे देखने में LayoutInflater जहां इसकी आवश्यकता है।

 LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = vi.inflate(R.layout.your_layout, null); // fill in any details dynamically here TextView textView = (TextView) v.findViewById(R.id.a_text_view); textView.setText("your text"); // insert into main view ViewGroup insertPoint = (ViewGroup) findViewById(R.id.insert_point); insertPoint.addView(v, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); 

आपको उस अनुक्रमणिका को समायोजित करना पड़ सकता है जहां आप दृश्य सम्मिलित करना चाहते हैं।

इसके अतिरिक्त, लेआउट पर्मों को निर्धारित करें कि आप इसे कैसा मौलिक दृश्य में कैसे फ़िट करना चाहते हैं। जैसे FILL_PARENT , या MATCH_PARENT , आदि के साथ।

LayoutInflater कक्षा देखें।

 LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); ViewGroup parent = (ViewGroup)findViewById(R.id.where_you_want_to_insert); inflater.inflate(R.layout.the_child_view, parent); 

ऐसा लगता है कि क्या आप वास्तव में एक कस्टम एडेप्टर के साथ एक ListView चाहते हैं निर्दिष्ट लेआउट फुलाया। एक अर्रे एडाप्टर का उपयोग करना और विधि को सूचित करेंडेटासेटटैग notifyDataSetChanged() आपके पास विचारों का निर्माण और रेंडरिंग का पूरा नियंत्रण है।

इन ट्यूटोरियल पर एक नज़र डालें

@ मार्क फिशर के उत्तर को और अधिक स्पष्ट करने के लिए, डाला गया फुलाया दृश्य लेआउट फ़ोल्डर के तहत एक एक्सएमएल फाइल होना चाहिए, लेकिन बिना किसी लेआउट (ViewGroup) जैसे LinearLayout आदि। मेरा उदाहरण:

रेस / लेआउट / my_view.xml

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/i_am_id" android:text="my name" android:textSize="17sp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"/> 

फिर, सम्मिलन बिंदु, LinearLayout जैसे एक लेआउट होना चाहिए:

रेस / लेआउट / activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/aaa" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/insert_point" android:layout_width="match_parent" android:layout_height="match_parent"> </LinearLayout> </RelativeLayout> 

तो कोड होना चाहिए

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shopping_cart); LayoutInflater inflater = getLayoutInflater(); View view = inflater.inflate(R.layout.my_view, null); ViewGroup main = (ViewGroup) findViewById(R.id.insert_point); main.addView(view, 0); } 

मैं इस बहुत ही इसी तरह का उत्तर पोस्ट करने का कारण यह है कि जब मैंने मार्क के समाधान को लागू करने की कोशिश की, तो मुझे यह पता चला कि मैं insert_point और child view के लिए किस एक्सएमएल फाइल का उपयोग करना चाहिए। मैंने पहले बच्चे के दृश्य में लेआउट का इस्तेमाल किया था और यह पूरी तरह से काम नहीं कर रहा था, जिससे मुझे यह पता लगाने में कई घंटे लगे। तो आशा है कि मेरी अन्वेषण दूसरों के समय को बचा सकता है

  // Parent layout LinearLayout parentLayout = (LinearLayout)findViewById(R.id.layout); // Layout inflater LayoutInflater layoutInflater = getLayoutInflater(); View view; for (int i = 1; i < 101; i++){ // Add the text layout to the parent layout view = layoutInflater.inflate(R.layout.text_layout, parentLayout, false); // In order to get the view we have to use the new view with text_layout in it TextView textView = (TextView)view.findViewById(R.id.text); textView.setText("Row " + i); // Add the text view to the parent layout parentLayout.addView(textView);