এক্সএমএল লেআউটে কোনও স্পিনারের বিকল্পগুলি স্থাপন করা কি সম্ভব? এই পৃষ্ঠাটি পরামর্শ দেয় যে আমার একটি অ্যারেএডাপ্টার ব্যবহার করা উচিত? এটি করা সম্ভব হচ্ছে না বলে মনে হচ্ছে বিশ্রী।
এক্সএমএল লেআউটে কোনও স্পিনারের বিকল্পগুলি স্থাপন করা কি সম্ভব? এই পৃষ্ঠাটি পরামর্শ দেয় যে আমার একটি অ্যারেএডাপ্টার ব্যবহার করা উচিত? এটি করা সম্ভব হচ্ছে না বলে মনে হচ্ছে বিশ্রী।
উত্তর:
আমি এ সম্পর্কে নিশ্চিত নই, তবে একটি শট দিন।
আপনার স্ট্রিং.এক্সএমএল সংজ্ঞায়িত:
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>
আপনার লেআউটে:
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/array_name"
/>
আমি শুনেছি এটি সবসময় ডিজাইনারের কাজ করে না, তবে এটি ঠিকঠাক করে।
drawSelectorOnTop
যেহেতু স্পিনার ছাড়া অন্য কোনও পৃথক নির্বাচক নেই। সমাধান অবশ্যই কাজ করে, ধন্যবাদ!
android:entryValues
। তালিকাগুলি এটি সমর্থন করে।
Spinner
এবং দেখুন AbsSpinner
। উভয় এপিআই 19 এবং 23 এ, অ্যাবস্পিনার কনস্ট্রাক্টর ব্যবহার করে R.styleable.AbsSpinner_entries
তবে তারা কোথাও ব্যবহার করে না entryValues
। এটি কেবল একটি কাকতালীয় বিষয় যা আপনার কোডটি আপনি প্রত্যাশা করেছিলেন doing (বা সম্ভবত কিছু প্রস্তুতকারকের রমগুলির একটি কাস্টম স্পিনার বাস্তবায়ন রয়েছে যা আসলে পরিচালনা করে android:entryValues
?)
আপনার স্ট্রিং.এক্সএমএল ফাইলে এটি সংজ্ঞায়িত করুন এবং আপনি যা চান তার অ্যারের নাম দিন, যেমন "ওজন"
<string-array name="Weight">
<item>Kg</item>
<item>Gram</item>
<item>Tons</item>
</string-array>
এবং আপনার কোড.আরএমএল এই কোড
<Spinner
android:id="@+id/fromspin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/Weight"
/>
আপনার জাভা ফাইলে, getActivity
খণ্ডে ব্যবহৃত হয়; আপনি যদি সেই কোডটি ক্রিয়াকলাপে লিখেন তবে সরান getActivity
।
a = (Spinner) findViewById(R.id.fromspin);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this.getActivity(),
R.array.weight, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
a.setAdapter(adapter);
a.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
if (a.getSelectedItem().toString().trim().equals("Kilogram")) {
if (!b.getText().toString().isEmpty()) {
float value1 = Float.parseFloat(b.getText().toString());
float kg = value1;
c.setText(Float.toString(kg));
float gram = value1 * 1000;
d.setText(Float.toString(gram));
float carat = value1 * 5000;
e.setText(Float.toString(carat));
float ton = value1 / 908;
f.setText(Float.toString(ton));
}
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
});
// Inflate the layout for this fragment
return v;
}
প্রথম মন্তব্যের প্রসঙ্গে: আপনি এটি করলে আপনি একটি ত্রুটি পাবেন (অ্যান্ড্রয়েড স্টুডিওতে)। এটি এর সাথে অ্যান্ড্রয়েড নেমস্পেসের বাইরে থাকা সম্পর্কিত। আপনি যদি এই ত্রুটিটি ঠিক করতে জানেন না তবে নীচের উদাহরণটি দেখুন। আশাকরি এটা সাহায্য করবে!
উদাহরণ -পূর্বে:
<string-array name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
উদাহরণ - এর পরে:
<string-array android:name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
string-array
একটি name
বৈশিষ্ট্য থাকতে চায় এবং এটির স্বীকৃতি দেয় না android:name
।
android:entryValues="@array/array_name_values"
।