অ্যান্ড্রয়েড: জাভা কোড প্রোগ্রামিং থেকে স্পিনার পূরণ করুন


84

আপনি কীভাবে জাভা কোড থেকে কোনও স্পিনার পূরণ করবেন?

লেআউটে আমার মতো স্পিনার রয়েছে:

 <Spinner
     android:id="@+id/consultation_deseases"
     android:layout_width="@dimen/bigSpinnerWidth"
     android:layout_height="@dimen/bigSpinnerHeight"
     android:prompt="@string/disease_prompt" />

জাভা কোড সহ আমার অ্যাডাপ্টার তৈরি করতে এবং আইটেমগুলি যুক্ত করতে হবে।

উত্তর:


228
// you need to have a list of data that you want the spinner to display
List<String> spinnerArray =  new ArrayList<String>();
spinnerArray.add("item1");
spinnerArray.add("item2");

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
    this, android.R.layout.simple_spinner_item, spinnerArray);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner sItems = (Spinner) findViewById(R.id.spinner1);
sItems.setAdapter(adapter);

আপনি কি এই জাতীয় কিছু করতে পারে নির্বাচিত হয় তা খুঁজে বের করতে

String selected = sItems.getSelectedItem().toString();
if (selected.equals("what ever the option was")) {
}

21

পুরোপুরি প্রোগ্রামের জন্য এখানে একটি উদাহরণ রয়েছে:

  • init একজন স্পিনার
  • স্ট্রিং তালিকার মাধ্যমে এটি ডেটা পূরণ করুন।
  • স্পিনারটিকে পুনরায় আকার দিন এবং এটি আমার দৃশ্যে যুক্ত করুন।
  • স্পিনার ফন্টটি ফর্ম্যাট করুন (ফন্টের আকার, রঙ, প্যাডিং)।
  • স্পিনার পরিষ্কার করুন।
  • স্পিনারে নতুন মান যুক্ত করুন।
  • স্পিনার পুনরায় আঁকুন।

আমি নিম্নলিখিত ক্লাস ওয়ার্স ব্যবহার করছি:

Spinner varSpinner;
List<String> varSpinnerData;

float varScaleX;
float varScaleY;    

এ - স্পিনারটি শুরু করুন এবং রেন্ডার করুন (ভ্যাররুটটি আমার মূল ক্রিয়াকলাপের জন্য একটি পয়েন্টার)

public void renderSpinner() {


    List<String> myArraySpinner = new ArrayList<String>();

    myArraySpinner.add("red");
    myArraySpinner.add("green");
    myArraySpinner.add("blue");     

    varSpinnerData = myArraySpinner;

    Spinner mySpinner = new Spinner(varRoot);               

    varSpinner = mySpinner;

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, myArraySpinner);
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down vieww
    mySpinner.setAdapter(spinnerArrayAdapter);

বি - পুনরায় আকার দিন এবং আমার দর্শনে স্পিনার যুক্ত করুন:

    FrameLayout.LayoutParams myParamsLayout = new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT, 
            FrameLayout.LayoutParams.WRAP_CONTENT);
    myParamsLayout.gravity = Gravity.NO_GRAVITY;             

    myParamsLayout.leftMargin = (int) (100 * varScaleX);
    myParamsLayout.topMargin = (int) (350 * varScaleY);             
    myParamsLayout.width = (int) (300 * varScaleX);;
    myParamsLayout.height = (int) (60 * varScaleY);;


    varLayoutECommerce_Dialogue.addView(mySpinner, myParamsLayout);

সি - ক্লিক হ্যান্ডলারটি তৈরি করুন এবং হরফ সেট করতে এটি ব্যবহার করুন।

    mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int myPosition, long myID) {

            Log.i("renderSpinner -> ", "onItemSelected: " + myPosition + "/" + myID);

            ((TextView) parentView.getChildAt(0)).setTextColor(Color.GREEN);
            ((TextView) parentView.getChildAt(0)).setTextSize(TypedValue.COMPLEX_UNIT_PX, (int) (varScaleY * 22.0f) );
            ((TextView) parentView.getChildAt(0)).setPadding(1,1,1,1);


        }

        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }

    });

}   

ডি - নতুন ডেটা সহ স্পিনার আপডেট করুন:

private void updateInitSpinners(){

     String mySelected = varSpinner.getSelectedItem().toString();
     Log.i("TPRenderECommerce_Dialogue -> ", "updateInitSpinners -> mySelected: " + mySelected);


     varSpinnerData.clear();

     varSpinnerData.add("Hello World");
     varSpinnerData.add("Hello World 2");

     ((BaseAdapter) varSpinner.getAdapter()).notifyDataSetChanged();
     varSpinner.invalidate();
     varSpinner.setSelection(1);

}

}

আমি আপডেটসিন্টস্পিনারগুলিতে যা সমাধান করতে পারিনি, তা হ'ল ভারস্পিনার.সেটস্লেশন (0); এবং কাস্টম ফন্ট সেটিংস স্বয়ংক্রিয়ভাবে সক্রিয় করা আছে।

হালনাগাদ:

এই "কুরুচিপূর্ণ" সমাধানটি ভ্যারস্পিনার.সেটস্লেশন (0) সমাধান করে; ইস্যু করুন, তবে আমি এতে খুব খুশি নই:

private void updateInitSpinners(){

    String mySelected = varSpinner.getSelectedItem().toString();
    Log.i("TPRenderECommerce_Dialogue -> ", "updateInitSpinners -> mySelected: " + mySelected);


    varSpinnerData.clear();

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, varSpinnerData);
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    varSpinner.setAdapter(spinnerArrayAdapter);  


    varSpinnerData.add("Hello World");
    varSpinnerData.add("Hello World 2");

    ((BaseAdapter) varSpinner.getAdapter()).notifyDataSetChanged();
    varSpinner.invalidate();
    varSpinner.setSelection(0);

}

}

আশাকরি এটা সাহায্য করবে......

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.