दिलचस्प पोस्ट
बीसीपी / बल्क INSERT बनाम टेबल-वैल्यू पैरामीटर का प्रदर्शन क्लासपाथ में कहीं से संसाधन लोड करें कई पंक्तियों के लिए अंतिम डाले गए आईडी प्राप्त करना पायथन में HTTP GET का तेज़ तरीका क्या है? हम एक std :: vector <AbstractClass> क्यों नहीं घोषित कर सकते हैं? कोणीय जेएस: कोणीय क्यों {angular} में {{}} से बेहतर है? MongoDB BSON दस्तावेज़ आकार सीमा को समझना टर्नरी ऑपरेटर बनाम सुंदरता अगर बयान जावा प्रतिबिंब: घोषणा आदेश में फ़ील्ड और तरीके प्राप्त करना संग्रह के लिए क्या अंतर है। स्ट्रीम ()। के लिए हर () और संग्रह। ForEach ()? रीशरपर के कुछ विकल्प क्या हैं? एंड्रॉइड होमस्क्रीन का विकास करना क्या यह प्रोग्रामिंग के लिए iPhone को मूक करना संभव है? स्व-जुड़ने की व्याख्या मैं एक डिस्प्ले कैसे निर्दिष्ट कर सकता हूं?

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

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

<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> 

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

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

अपने लेआउट टेम्प्लेट के आधार पर लेआउट 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);