স্পিনার মান কীভাবে পাবেন?


263

অ্যান্ড্রয়েডে, আমি শ্রোতার সাথে নির্বাচিত স্পিনার মান পাওয়ার চেষ্টা করছি।

স্পিনারের মান পাওয়ার সর্বোত্তম উপায় কী?

উত্তর:


571
Spinner mySpinner = (Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();

11
"মান" এখানে বেশ অস্পষ্ট। এটি বর্তমান স্পিনার আইটেমের শিরোনাম পুনরুদ্ধার করে (যেমন স্ট্রিংটি ব্যবহারকারীর কাছে প্রদর্শিত হয়) তবে আপনি যদি স্পিনারের সাথে উদাহরণস্বরূপ কোনও ইন্টার অ্যারে ম্যাপ করেন তবে এর মান নয়।
এ। স্টেইনবার্গেন

1
@ নির্বাচিত আইটেমটির মান পেতে ডেজ যেমন উদাহরণস্বরূপ আমাদের পূর্ণসংখ্যার মানটি তৈরি করা উচিত [] মানআরাই করা উচিত এবং এটি অ্যারেএসএক্সএমএল থেকে অনক্রিট ফাংশনে ফাইল করা উচিত যাতে আমরা পূর্ণসংখ্যার মান পাওয়ার জন্য মানগুলি অ্যারে [(int) মাইস্পিনার.সেটেলেক্ট আইটেম আইডি ()] ব্যবহার করতে পারি
বেলাল মজলম

128

স্পিনারের কোনও "নির্বাচিত" আইটেম নির্বাচন করা উচিত:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        Object item = parent.getItemAtPosition(pos);
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});

ধন্যবাদ - এটি কাজ করেছে, যদিও আমাকে পদ্ধতিগুলিতে শূন্য রিটার্ন টাইপ যুক্ত করার প্রয়োজন ছিল।
স্যাম ডটন

6
আইটেমের অবস্থানের উপর নির্ভর না করে সত্যিই এটি অর্জন করার কোনও উপায় নেই?
ভিঞ্জ

7
কোনও নির্বাচনের ইভেন্টের উপর নির্ভর না করে আপনি যদি স্পিনার মানটি পড়তে চান তবে খুব কার্যকর সমাধান নয়।
অ্যান্ড্রয়েডদেভ

3
@ পেট্রিক টীকা ওভাররাইড কখনই প্রয়োজন হয় না এটি কেবল সংকলককে বলে "এই ওভাররাইডটি সঠিকভাবে করা হয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন?"
সিকসস

1
কোনও পরিবর্তন সম্পাদিত না হলে ডিফল্ট নির্বাচিত আইটেমটি পাওয়ার বিষয়ে কী? @ ডোডোর একটি সবচেয়ে উপযুক্ত।
এক্সট্রিম বাইকার

49

বলুন এটি স্পিনার এন্ট্রি (যেমন শিরোনাম) এবং মান সহ আপনার এক্সএমএল:

<resources>
    <string-array name="size_entries">
        <item>Small</item>
        <item>Medium</item>
        <item>Large</item>
    </string-array>

    <string-array name="size_values">
        <item>12</item>
        <item>16</item>
        <item>20</item>
    </string-array>
</resources>

এবং এটি আপনার স্পিনার:

<Spinner
    android:id="@+id/size_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:entries="@array/size_entries" />

তারপরে এন্ট্রিগুলি পেতে আপনার কোডে:

Spinner spinner = (Spinner) findViewById(R.id.size_spinner);
String size = spinner.getSelectedItem().toString(); // Small, Medium, Large

এবং মান পেতে:

int spinner_pos = spinner.getSelectedItemPosition();
String[] size_values = getResources().getStringArray(R.array.size_values);
int size = Integer.valueOf(size_values[spinner_pos]); // 12, 16, 20

থেক্স, স্পিনারের উপর এটি অফারিয়াল এ্যান্ডআর ডকের মধ্যে থাকা উচিত, তারা কেবল শ্রোতার মাধ্যমে মূল্য পেয়েছে।
ভিজ্যুয়াল

এটি ঠিক আমি যা খুঁজছি
জেট_চুং

নিখুঁত সমাধান! android:entriesআমার দিন তৈরি।
কোডারপিসি


14
View view =(View) getActivity().findViewById(controlId);
Spinner spinner = (Spinner)view.findViewById(R.id.spinner1);
String valToSet = spinner.getSelectedItem().toString();

12

আপনি যদি ইতিমধ্যে জানেন যে আইটেমটি একটি String, তবে আমি পছন্দ করি:

String itemText = (String) mySpinner.getSelectedItem();

আপনি জানেন এমন একটিকে কল toString()করা কেবল টু কাস্টিংয়ের চেয়ে আরও বেশি চারিদিকের পথ বলে মনে হচ্ছে ।ObjectStringObjectString


2

স্পিনার রেফারেন্সে setOnItemSelectedListener যুক্ত করুন এবং এর মতো ডেটা পান `

 mSizeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            selectedSize=adapterView.getItemAtPosition(position).toString();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.