मेरे पास एक अलर्ट डायलॉग है जो कुछ टेक्स्ट इनपुट फ़ील्ड दिखाता है। जब मैं डेटा दर्ज करता हूं और "ओके" पर क्लिक करता हूं, तो यह इस डेटा को सहेजता है और इसे उस गतिविधि पर एक कस्टम दृश्य में प्रदर्शित करता है जिसे संवाद कहा जाता है।

अगर मैं इस डेटा को संपादित करना चाहता हूं, तो मैं कस्टम दृश्य पर क्लिक करता हूं और वही अलर्ट डायलॉग पॉप अप होता है। मैं डेटा को पूर्व-पॉप्युलेट करना चाहता हूं, और संपादन और नया डेटा जोड़ने की अनुमति देना चाहता हूं। हालाँकि, यहाँ वह जगह है जहाँ मुझे समस्या हो रही है।

जब मैं संवाद में मौजूदा डेटा जोड़ने का प्रयास करता हूं, तो विचार दृश्य के शीर्ष पर जुड़ जाते हैं, न कि वह सबव्यू जिसमें मैं उन्हें जोड़ना चाहता हूं। यहाँ देखें:

Populated View show be under the headings

तो चेतावनी संवाद मेरी गतिविधि से दृश्य को बढ़ाता है:

View dialogView = LayoutInflater.from(this).inflate(R.layout.material_add_dialog, viewGroup, false);
builder.setView(dialogView);

लेकिन यह R.layout.material_add_dialog मुख्य/शीर्ष दृश्य है।

मेरे पास एक कस्टम एडाप्टर क्लास है जिसका मैं भी उपयोग कर रहा हूं। यहाँ getView() विधि है:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        convertView = Objects.requireNonNull(mInflater).inflate(R.layout.add_material_popup_dialog_row, null);
    }

    Material material = mMaterials.get(position);

    EditText etMaterial = convertView.findViewById(R.id.material_add_text_material);
    EditText etSupplier = convertView.findViewById(R.id.material_add_text_supplier);
    EditText etWeight = convertView.findViewById(R.id.material_add_text_weight);
    EditText etAmount = convertView.findViewById(R.id.material_add_text_amount);

    etMaterial.setText(material.getMaterial());
    etSupplier.setText(material.getSupplier());
    etWeight.setText(material.getUnit());
    etAmount.setText(material.getAmount());

    return convertView;
}

इसलिए यदि आप convertView देखते हैं, तो यह R.layout.add_material_popup_dialog_row को फुला रहा है जो कि शीर्ष पर जोड़ी जा रही पंक्ति है।

तो वास्तव में मेरा सवाल यह है कि, मैं इस पंक्ति को संवाद दृश्य के सबव्यू में कैसे जोड़ सकता हूं?

धन्यवाद।

1
eoinzy 27 सितंबर 2019, 19:33

2 जवाब

आप कंटेनर बनाने की कोशिश कर सकते हैं LinearLayout as root फिर addView(convertView) और return root

0
indra lesmana 27 सितंबर 2019, 19:43

आपको बस सबव्यू प्राप्त करने या बनाने की आवश्यकता है। यदि यह मौजूद है:

View dialogView = LayoutInflater.from(this).inflate(R.layout.material_add_dialog, viewGroup, false);
View subView = dialogView.findViewById(R.id.mySubViewId);

या, आप एक नया दृश्य बना सकते हैं और इसे वर्तमान दृश्य में जोड़ सकते हैं:

//You would need to create the appropriate view for your use-case.
View view = new View();
dialogView.addView(view);
1
BlackHatSamurai 27 सितंबर 2019, 19:46
यह मेरी समझ है कि एडेप्टर में getView() विधि दृश्य/पंक्ति बनाता है और इसे builder.setView(dialogView); में सेट किए गए दृश्य में जोड़ता है। इसलिए मुझे एडॉप्टर में उस प्रक्रिया को इंटरसेप्ट करने के बारे में सलाह चाहिए, मुझे लगता है ...
 – 
eoinzy
27 सितंबर 2019, 20:45
क्या आप संवाद दृश्य के लिए अपना एक्सएमएल पोस्ट कर सकते हैं?
 – 
BlackHatSamurai
27 सितंबर 2019, 21:39