অ্যান্ড্রয়েড: অ্যারের থেকে প্রোগ্রামারিকভাবে স্পিনার তৈরি করুন


198

আমি অ্যান্ড্রয়েডে সমস্ত নতুন এবং আমি প্রোগ্রামারিকভাবে একটি স্পিনার তৈরি করার চেষ্টা করছি এবং অ্যারে থেকে ডেটা দিয়ে এটিকে খাওয়ানোর চেষ্টা করছি, তবে এক্সলিপস আমাকে একটি হুঁশিয়ারি দেয় যা আমি পরিচালনা করতে পারি না।

আমি যা পেয়েছি তা এখানে:

এই অ্যারেলিস্ট স্পিনারে থাকা উপাদানগুলি ধরে রাখে (পরে কোনও ফাইল থেকে পূর্ণ হয়ে যায়):

ArrayList<String> spinnerArray = new ArrayList<String>();

এই কোডটি আমি একটি সাইটে পেয়েছি যা স্পিনার তৈরি করতে হবে:

Spinner spinner = new Spinner(this);
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item,
                spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);

এখন দ্বিতীয় লাইন (অ্যারেএডাপ্টার ...) আমাকে এক্লিপসে একটি সতর্কবার্তা জানিয়েছে যে "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized", এটি কীভাবে ঠিক করা যায় (বা তার প্রথম স্থানে কী বোঝায় :)) আমার কোনও ধারণা নেই।

এটি কেবল একটি সতর্কবার্তা এবং অ্যাপটি ঠিকঠাক চলবে বলে মনে হচ্ছে তবে আমি কী ভুল তা বুঝতে এবং এটি ঠিক করতে চাই। কোন ইঙ্গিত প্রশংসা করা হয়।

শুভেচ্ছা, নির্বাচন0r

উত্তর:


388

ArrayAdapter<String> কাজ করা উচিত.

অর্থাৎ,

Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
            (this, android.R.layout.simple_spinner_item,
           spinnerArray); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
                                                     .simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter); 

আমি চেষ্টা করেছিলাম তবে ত্রুটিটি কিছুটা পরিবর্তিত হয়েছে :) Type safety: The expression of type ArrayAdapter needs unchecked conversion to conform to ArrayAdapter<String>
06

2
আপনি আপনার পোস্ট সম্পাদনা করার সময় দ্রুত মন্তব্য করেছেন :) আমি দ্বিতীয়টি মিস করেছি <String>, আপনার কোডটি এখন কাজ করে, অনেক অনেক ধন্যবাদ!
06

23
ব্যবহার করুন ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(activity, R.layout.simple_spinner_item); spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);বা অন্য কোনও ডিভাইসে স্পিনারে একটি রেডিও বোতাম প্রদর্শিত হতে পারে।
কেন

আপনার উত্তরটি সহায়ক ছিল এবং আপনি দয়া করে আমাকে বলতে পারেন যে আমি যদি দু'জন স্পিনার ব্যবহার করি এবং যদি আমি চাই যে ১ ম স্পিনার কেবল তখনই দ্বিতীয়টি কাজ করা উচিত

1
এটি অ্যান্ড্রয়েড ডকুমেন্টেশনে এই পদ্ধতিটিও বর্ণনা করে: developer.android.com/guide/topics/ui/controls/spinner.html
WOUNDEDStevenJones

109

অ্যারের সাথে একইভাবে

// Array of choices
String colors[] = {"Red","Blue","White","Yellow","Black", "Green","Purple","Orange","Grey"};

// Selection of the spinner
Spinner spinner = (Spinner) findViewById(R.id.myspinner);

// Application of the Array to the Spinner
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,   android.R.layout.simple_spinner_item, colors);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);

আমি এটি অ্যারেলিস্ট ব্যবহার করে করেছি কারণ আমার অ্যারেটি লুপ থেকে এসেছে (স্থির নয়)।
জ্যাকসনক্র

61

প্রকল্পের সংস্থানগুলি থেকে বোঝা নামের একটি স্ট্রিং-অ্যারে নিয়ে এটি আমার পক্ষে কাজ করেছে shoes:

Spinner              spinnerCountShoes = (Spinner)findViewById(R.id.spinner_countshoes);
ArrayAdapter<String> spinnerCountShoesArrayAdapter = new ArrayAdapter<String>(
                     this,
                     android.R.layout.simple_spinner_dropdown_item, 
                     getResources().getStringArray(R.array.shoes));
spinnerCountShoes.setAdapter(spinnerCountShoesArrayAdapter);

এটি স্ট্রিং-অ্যারে নামের আমার সংস্থান ফাইল ( res/values/arrays.xml) :shoes

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="shoes">
        <item>0</item>
        <item>5</item>
        <item>10</item>
        <item>100</item>
        <item>1000</item>
        <item>10000</item>
    </string-array>
</resources>

এই পদ্ধতির সাহায্যে এটিকে বহুভাষিক করা সহজ (যদি প্রয়োজন হয়)।


36

এটি আসলে আমার পক্ষে কাজ করেছিল

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, spinnerArray);
    spinnerArrayAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );

    spinner = (Spinner) findViewById( R.id.spinner );
    spinner.setAdapter(spinnerArrayAdapter);

6
আপনি Spinner spinner = new Spinner(this);যখন এটি করেন তখন এর উদ্দেশ্য কীspinner = (Spinner) findViewById( R.id.spinner );
এমআর 5

ত্রুটি কেন: অ্যারেএডাপ্টারের জন্য কোনও উপযুক্ত কনস্ট্রাক্টর পাওয়া যায় নি (<বেনাম অনিমেটসিলিটলাইস্টেনার>, ইনট, ডিটেইলডাটা) কনস্ট্রাক্টর অ্যারেএডাপ্টার.আর্রেএডাপ্টার (কনটেক্সট, ইনট, ইনট, লিস্ট <স্ট্রিং>) প্রযোজ্য নয়?
ব্যবহারকারী 151968

6

এই কাজটি আমার জন্য: -

String[] array = {"A", "B", "C"};
String abc = "";


Spinner spinner = new Spinner(getContext());
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, array); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);

আমি একটি টুকরা ব্যবহার করছি।


3

কোটলিন ভাষায় আপনি এটি এইভাবে করতে পারেন:

val values = arrayOf(
    "cat",
    "dog",
    "chicken"
)

ArrayAdapter(
    this,
    android.R.layout.simple_spinner_item,
    values
).also {
    it.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    spinner.adapter = it
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.