একটি প্রবন্ধ দেওয়া একটি লেআউট ইনফ্লেটার কিভাবে পাবেন?


226

আমি একটি তালিকাআডাপ্টারের একটি কাস্টম বাস্তবায়ন লিখছি।

এর নির্মাণকারীটিতে, আমি একটি প্রসঙ্গ নিচ্ছি, একটি সংস্থান আইডি (অর্থাত্ R.id.xxx লেআউট ফাইলটি উপস্থাপন করে), এবং একটি তালিকা এবং একটি মানচিত্র (এগুলিতে ডেটা রয়েছে)।

এখন, সমস্যাটি হ'ল পৃথক বিন্যাসের এক্সএমএল ফাইলটিতে থাকা ভিউ অবজেক্টটি পেতে আমার একটি লেআউটইনফ্লেটার প্রয়োজন।

কীভাবে কেবল প্রসঙ্গটি দেওয়া হয় আমি কীভাবে লেআউটআইনফ্লেটারটি ধরে রাখতে পারি?

এখন, আমি কেন এটি সম্ভব বলে মনে করি, এটি হ'ল এটি অ্যারেএডাপ্টারের (প্রসঙ্গ, সংস্থান, পাঠ্য ভিউ রিসোর্সআইডি, ডেটা অ্যারে) নির্মাণকারীর সাথে সম্পূর্ণরূপে অনুরূপ, এবং আমি অ্যারেএডাপ্টারের একটি ব্যবহারও করতে হয়েছিল লেআউটআইনফ্লেটার কেবল একটি প্রসঙ্গ দেওয়া হয়েছে।

তবে কীভাবে এটি করা যায়?

উত্তর:


515

আপনি ক্লাস static from()থেকে পদ্ধতিটিLayoutInflater ব্যবহার করতে পারেন :

 LayoutInflater li = LayoutInflater.from(context);

11
ধন্যবাদ! আমি কনটেক্সট.জেটসোমথিং ()। getAnotherThing ()। getLayoutInflater () সন্ধান করার চেষ্টা করছিলাম!
এডউইন লি

এটি আমার জন্য কাজ করা একমাত্র পদ্ধতি। আমি এখন পর্যন্ত চেষ্টা করেছি এমন অন্য যে কোনও একটি ব্যতিক্রম ছুঁড়ে দিয়েছে।
num1

4
প্রতিবারের মতো প্রয়োজনে inflater পাওয়া কি ব্যয়বহুল, অর্থাত, আপনি কি মনে করেন যে আমরা স্ফীতকারীর কোনও সদস্যকে বাঁচাতে হবে?
অ্যালিকেলজিন-কিলাকা

বিটিডব্লু আমি মনে করি লেআউটআইনফ্লেটার লি = (লেআউটইনফ্লেটার) কনটেক্সট.ব্যাটসিসটেম সার্ভিস (কনটেক্সট.প্লেআউটআউএনআইএনএফএলএটার ফ্ল্যাটসर्ভিসিস) হিসাবে শেষ পর্যন্ত লেআউটআইফ্ল্যাটার.ফ্রোম (কনটেক্সট) একইভাবে করছে।
অঙ্কুর চৌধুরী চৌধুরী

3
কোনটা ভালো হবে এক ?? সঙ্গে এক 270 ভোট বা সঙ্গে এক 25+ ভোট
DJphy

53

লেআউটআইনফ্লেটার পেতে আপনি এই কোডটি ব্যবহার করতে পারেন:

LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)

40
LayoutInflater.from (প্রসঙ্গ সিটিএক্স) এবং এই getSustemService (...) এর মধ্যে পার্থক্য কী?
টিও চুং পিং

8
+1, পদ্ধতিটি কার্যকর করার ক্ষেত্রে লেআউটআইইনফ্লেটার.ফ্রোম (প্রসঙ্গে) সিস্টেম ম্যানেজারের কাছ থেকে লেআউটআইনফ্লেটার পরিষেবা সরবরাহকারী পেতে কনটেক্সট.কেটসেটসেমস ਸਰਵਿਸ () কেও কল করুন। তাই কল স্ট্যাকের মধ্যে একটি লিটার পার্থক্য থাকতে পারে।
এনগুইনড্যাট

11
LayoutInflater.from (প্রসঙ্গ) এছাড়াও যদি স্ফীতটিকে পুনরুদ্ধার করা না যায় তবে ত্রুটি নিক্ষেপ করুন: এখানে কোড: পাবলিক স্ট্যাটিক লেআউটআইনফ্লেটার থেকে (প্রসঙ্গ প্রসঙ্গে) {লেআউটইনফ্লেটার লেআউটইনফ্লেটার = (লেআউটআইফ্লেটার) প্রসঙ্গ if (LayoutInflater == নাল) new নতুন AssertionError নিক্ষেপ করুন ("লেআউটআইফ্ল্যাটারটি পাওয়া যায় নি" "); } লেআউটআইনফ্লেটার ফিরে; }
হাইপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.