অ্যান্ড্রয়েড স্পিনার: আরম্ভের সময় অন আইটেমস্লেটেড কল এড়িয়ে চলুন


156

আমি একটি Spinnerএবং এ দিয়ে একটি Android অ্যাপ্লিকেশন তৈরি করেছি TextView। আমি টেক্সটভিউতে স্পিনারের ড্রপ ডাউন তালিকা থেকে নির্বাচিত আইটেমটি প্রদর্শন করতে চাই। আমি onCreateপদ্ধতিটিতে স্পিনার প্রয়োগ করেছি তাই যখন আমি প্রোগ্রামটি চালাচ্ছি, এটিতে একটি মান দেখায় TextView(ড্রপ ডাউন তালিকা থেকে কোনও আইটেম নির্বাচন করার আগে)।

আমি ড্রপ ডাউন তালিকা থেকে কোনও আইটেম নির্বাচন করার পরে টেক্সটভিউতে মানটি দেখাতে চাই। আমি এটা কিভাবে করবো?

আমার কোডটি এখানে:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class GPACal01Activity extends Activity implements OnItemSelectedListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Spinner spinner = (Spinner) findViewById(R.id.noOfSubjects);

        // Create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.noofsubjects_array, android.R.layout.simple_spinner_item);
        // Specify the layout to use when the list of choices appears
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // Apply the adapter to the spinner
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
    }

    public void onItemSelected(AdapterView<?> parent, View arg1, int pos,long id) {
        TextView textView = (TextView) findViewById(R.id.textView1);
        String str = (String) parent.getItemAtPosition(pos);
        textView.setText(str);
    }

    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
}

স্পিনারদের সর্বদা একটি ডিফল্ট নির্বাচিত মান থাকে, আপনি যদি কোনও ডিফল্ট নির্বাচিত মান না নিয়ে কোনও স্পিনার পেতে চান তবে আপনার কাস্টম স্পিনার তৈরি করতে হবে, বা খালি প্রবেশের মাধ্যমে একটি কাস্টম স্পিনার তৈরি করতে হবে এবং getView () পদ্ধতিতে এর দৃশ্যমানতা পরিবর্তন করতে হবে GOE
Houcine

4
2018 এর শেষের দিকে কীভাবে এমন বিরক্তিকর ত্রুটি এখনও বিদ্যমান ???
ব্যবহারকারী -123

উত্তর:


174
spinner.setOnItemSelectedListener(this); // Will call onItemSelected() Listener.

সুতরাং প্রথমবারের সাথে কোনও পূর্ণসংখ্যার মান সহ এটি হ্যান্ডেল করুন

উদাহরণ: প্রাথমিকভাবে নিন int check = 0;

public void onItemSelected(AdapterView<?> parent, View arg1, int pos,long id) {
   if(++check > 1) {
      TextView textView = (TextView) findViewById(R.id.textView1);
      String str = (String) parent.getItemAtPosition(pos);
      textView.setText(str);
   }
}

আপনি এটি বুলিয়ান মান সহ এবং বর্তমান এবং পূর্ববর্তী অবস্থানগুলি পরীক্ষা করে করতে পারেন। এখানে দেখো


2
অসাধারণ মানুষ..আমি যখন প্রথম এই সমস্যার মুখোমুখি হয়েছি তখন আমি কাস্টম স্পিনার প্রয়োগ করার চেষ্টা করেছি ... তবুও এটি কার্যকর হয়নি..কিন্তু আপনার সমাধানটি মনোমুগ্ধকর মত কাজ করেছে..ধন্যবাদ।
সাশ_কেপি ২

1
আপনি কোথায় চেক ঘোষণা করেন? গেটভিউ () এর বাইরে? ভিউহোল্ডার ভিতরে? কোথায়? আপনার সমাধান চেষ্টা করেছিলাম কিন্তু আমার জন্য কাজ করে না।
ব্যবহারকারীর 3718908

9
এটি একটি প্যাচ একটি সমাধান নয় যা আমি অনুমান করি।
সাকশাম

1
আমি একই সমস্যা সম্মুখীন হচ্ছি। এটা কি এক প্রকার বাগ? এছাড়াও যদি আমি একই আইটেমটি বারবার নির্বাচন করি তবে শ্রোতা প্রথমবারের পরে কাজ করে না। এটি কেবল নির্বাচন আইটেম পরিবর্তিত হলে কাজ করে। কোন মন্তব্য, সাহায্য?
অমিতাভা

1
আমি আমার একই সমস্যার সাথে এই সমাধানটি চেষ্টা করেছিলাম, তবে এটি কেবল একটির উদাহরণস্বরূপ: যখন ড্রপডাউন করার সময় আমার কাছে 2 টি আইটেম রয়েছে, তখন আমি যখন কোনও স্পিনার আইটেম প্রথমবার নির্বাচন করি, তখন আমি যখন দ্বিতীয়বার চেষ্টা করি যখন এটি সঠিকভাবে কাজ করছে না
ওয়াসিম

116

অনআইটেমসিলেক্টলাইস্টেনার সেট করার আগে এই লাইনটি কেবল রেখে দিন

spinner.setSelection(0,false)

7
এটি কীভাবে এবং কেন সহায়তা করে তা যদি আপনি লিখেন তবে এটি আরও ভাল উত্তর হবে।
ব্যবহারকারী 3533716

1
এটি সাহায্য করে, তবে কীভাবে চাই?
এইএমএলভিজি

14
এটি কাজ করে কারণ আপনি প্রথমে নির্বাচনটি সেট করেছেন, এবং তারপরে একটি শ্রোতা যুক্ত করবেন, তবে শ্রোতা বলা হবে না কারণ আপনি ইতিমধ্যে এই নির্বাচনটি ইতিমধ্যে বেছে নিয়েছেন। কেবলমাত্র নতুন নির্বাচন শ্রোতাদের কল করবে।
অ্যান্ড্রয়েড বিকাশকারী

4
অভ্যন্তরীণভাবে setSelection(int, boolean)কল করার কারণে এটি কাজ করে setSelectionInt()এবং আপনার শ্রোতাদের এই কল করার পরে (আগের পরিবর্তে) সেট করা দরকার। সাবধান থাকুন যা setSelection(int)কাজ করবে না, কারণ এটি setNextSelectedPositionInt()অভ্যন্তরীণভাবে কল করে এবং এটিই আমাকে এখানে নিয়ে গেছে led
হাই ঝাং

3
এটি অনক্রিটভিউ () এর আগে বা এর আগে ঘোষণা করা হলে এটি কাজ করে না। onI আইটেমসিলেক্টডকে ডাকা হবে।
আরশ

62

এপিআই স্তর 3 দিয়ে শুরু করে আপনি ব্যবহারকারীর ডিভাইসের সাথে ইন্টারঅ্যাক্ট করছে কিনা তা নির্ধারণ করতে বুলিয়ান সহ কোনও ক্রিয়াকলাপে ইউজারআইন্টারেক্টারেশন () ব্যবহার করতে পারেন।

http://developer.android.com/reference/android/app/Activity.html#onUserInteraction ()

@Override
public void onUserInteraction() {
     super.onUserInteraction();
     userIsInteracting = true;
}

কার্যকলাপের ক্ষেত্র হিসাবে আমার রয়েছে:

 private boolean userIsInteracting;

অবশেষে, আমার স্পিনার:

      mSpinnerView.setOnItemSelectedListener(new OnItemSelectedListener() {

           @Override
           public void onItemSelected(AdapterView<?> arg0, View view, int position, long arg3) {
                spinnerAdapter.setmPreviousSelectedIndex(position);
                if (userIsInteracting) {
                     updateGUI();
                }
           }

           @Override
           public void onNothingSelected(AdapterView<?> arg0) {

           }
      });

আপনি ক্রিয়াকলাপটি চালিয়ে যাওয়ার সময় বুলেটটি মিথ্যাতে পুনরায় সেট করা হয়। একটি যাদুমন্ত্র মত কাজ করে.


3
ভাল একটি বিল..আমি মনে করি এটি উত্তর হিসাবে গ্রহণযোগ্যতার চেয়ে ভাল সমাধান
রীতেশ গুন

আপনি সেটপ্রিপ্রিলিভস সিলেক্ট ইন্ডেক্স কোথায় পাবেন?!?!
TheQ

ভুল টাইপ করেছেন? :) সেটপ্রিলেসিসিলেক্ট ইন্ডেক্স ()
বিল

4
এটি ব্যবহারকারীর নীচে বিভাজনের ক্ষেত্রে কাজ করবে না কারণ ব্যবহারকারীর ক্রিয়াকলাপ হ'ল কার্যকলাপ পদ্ধতি। অন্য কোন সমাধান?
চিত্রাঙ্গ

1
@ এরিকবি এনভিএম, এটি আবিষ্কার করেছেন। শ্রোতার ভিতরে এটি মিথ্যা সেট করা ভাল কাজ করে।
সিকান্দার

20

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

অ্যান্ড্রয়েডে স্পিনার এর সূচনা সমস্যাযুক্ত কারণ কখনও কখনও উপরের সমস্যাটি এই প্যাটার্ন দ্বারা সমাধান করা হয়েছিল।

Spinner.setAdapter();
Spinner.setSelected(false);  // must
Spinner.setSelection(0,true);  //must
Spinner.setonItemSelectedListener(this);

অ্যাডাপ্টারের সেটিংয়ের প্রথম অংশ হওয়া উচিত এবং স্পিনারকে আরম্ভ করার সময় আইটেমসিলেক্টলাইস্টেনার (এটি) শেষ হবে। আমার অনআইটিমেসলেক্টেড () এর উপরের ধরণ অনুসারে স্পিনার শুরুর সময় বলা হয় না


11

হা হা ... আমারও একই প্রশ্ন আছে। যখন initViews () ঠিক এটির মতো করে থাকে sequ ক্রমটি কী, শ্রোতা সর্বশেষ। শুভকামনা!

spinner.setAdapter(adapter);
spinner.setSelection(position);
spinner.setOnItemSelectedListener(listener);

ভাল একটা! আমি এর আগে যা কিছু আবেদন করেছি তা কিছুই আমার জন্য কাজ করেনি তবে এটি আমার পক্ষে মনোমুগ্ধকর মতো কাজ করেছে। ধন্যবাদ @ ট্রিসোথ
দীপিকা লালরা

11
আমার জন্য স্পিনার.সেটস্লেশন (পজিশন, মিথ্যা) একইভাবে ব্যবহৃত হয়েছে worked সেট-সিলেকশন (পজিশন) পদ্ধতির সাহায্যে শুরুর দিকে শোনার ডাক দেওয়া হয়েছিল।
মারিও কুটলেভ

2
@ হুগোগ্রেস স্পিনার.সেটসলেশন (0, মিথ্যা) কল করার চেষ্টা করুন; । বিষয়টি হ'ল, এখন এটি এই অবস্থানের নির্বাচনটিকে অগ্রাহ্য করবে, কারণ এটি ইতিমধ্যে নির্বাচিত
অ্যান্ড্রয়েড বিকাশকারী

8

আমার সমাধান:

protected boolean inhibit_spinner = true;


@Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int pos, long arg3) {

            if (inhibit_spinner) {
                inhibit_spinner = false;
            }else {

            if (getDataTask != null) getDataTask.cancel(true);
            updateData();
            }

        }

7

আরম্ভের সময় স্পিনার.সেটঅনটাইমসলেক্টলিস্টনার () কল করা এড়াতে

spinner.setSelection(Adapter.NO_SELECTION, true); //Add this line before setting listener
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
});

6

আপনি এইভাবে এটি করতে পারেন:

AdapterView.OnItemSelectedListener listener = new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            //set the text of TextView
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

yourSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            yourSpinner.setOnItemSelectedListener(listener);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

প্রথমে আমি একটি শ্রোতা তৈরি করি এবং একটি পরিবর্তনশীল কলব্যাকের জন্য দায়ী; তারপরে আমি একটি দ্বিতীয় শ্রোতা বেনামে তৈরি করি এবং যখন এটি প্রথম বার বলা হয়, শ্রোতার এই পরিবর্তন হয় =]


3

এরপরে ব্যবহারকারীর ইন্টারঅ্যাকশন পতাকাটি অন টচ পদ্ধতিতে সত্যতে সেট হয়ে যায় এবং পুনরায় সেট করা যায় onItemSelected() একবার নির্বাচন পরিবর্তন হ্যান্ডেল হয়ে গেলে তা । আমি এই সমাধানটি পছন্দ করি কারণ ব্যবহারকারীর ইন্টারঅ্যাকশন পতাকাটি স্পিনারের জন্য একচেটিয়াভাবে পরিচালিত হয় এবং কাঙ্ক্ষিত আচরণকে প্রভাবিত করতে পারে এমন ক্রিয়াকলাপের অন্যান্য দর্শনের জন্য নয়।

কোডে:

স্পিনারের জন্য আপনার শ্রোতা তৈরি করুন:

public class SpinnerInteractionListener implements AdapterView.OnItemSelectedListener, View.OnTouchListener {

    boolean userSelect = false;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        userSelect = true;
        return false;
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        if (userSelect) { 
            userSelect = false;
            // Your selection handling code here
        }
    }

}

স্পিনারের কাছে শ্রোতাকে একটি OnItemSelectedListenerএবং উভয় হিসাবে যুক্ত করুন OnTouchListener:

SpinnerInteractionListener listener = new SpinnerInteractionListener();
mSpinnerView.setOnTouchListener(listener);
mSpinnerView.setOnItemSelectedListener(listener);

2

একই রকম সহজ সমাধান যা একাধিক স্পিনারকে সক্ষম করে তা হ'ল অ্যাডাপ্টারভিউকে একটি সংগ্রহে - ​​ক্রিয়াকলাপগুলি সুপারক্লাসে - অন আইটেমসলেক্টেড (...) এর প্রথম নির্বাহের পরে, পরীক্ষা করার আগে অ্যাডাপ্টারভিউ সংগ্রহে রয়েছে কিনা তা পরীক্ষা করে দেখুন। এটি সুপারক্লাসে এক ধরণের পদ্ধতির সক্ষম করে এবং একাধিক অ্যাডাপ্টারভিউ এবং তার জন্য একাধিক স্পিনার সমর্থন করে।

সুপারক্লাস ...

private Collection<AdapterView> AdapterViewCollection = new ArrayList<AdapterView>();

   protected boolean firstTimeThrough(AdapterView parent) {
    boolean firstTimeThrough = ! AdapterViewCollection.contains(parent);
    if (firstTimeThrough) {
       AdapterViewCollection.add(parent);
     }
    return firstTimeThrough;
   }

সাবক্লাস ...

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
      if (! firstTimeThrough(parent)) {
        String value = safeString(parent.getItemAtPosition(pos).toString());
        String extraMessage = EXTRA_MESSAGE;
        Intent sharedPreferencesDisplayIntent = new         Intent(SharedPreferencesSelectionActivity.this,SharedPreferencesDisplayActivity.class);
    sharedPreferencesDisplayIntent.putExtra(extraMessage,value);
    startActivity(sharedPreferencesDisplayIntent);
  }
  // don't execute the above code if its the first time through
  // do to onItemSelected being called during view initialization.

}


2

একটি বুলিয়ান ক্ষেত্র তৈরি করুন

private boolean inispinner;

ক্রিয়াকলাপের oncreate ভিতরে

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if (!inispinner) {
                inispinner = true;
                return;
            }
            //do your work here
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });


1

আপনি প্রথমে সেটঅন্টিচলিস্টনার দ্বারা এটি অর্জন করতে পারেন তারপরে অন-টাচ-এ আইটেমটিসলেক্টলিস্টনার সেট করুন

@Override
public boolean onTouch(final View view, final MotionEvent event) {
 view.setOnItemSelectedListener(this)
 return false;
}

আমি এটা ভালোবাসি. যদিও এটি প্রতিবার ব্যবহারকারী কোনও দৃশ্যে স্পর্শ করে একটি নতুন শ্রোতা তৈরি করে। সুতরাং আমি প্রথম তৈরি শ্রোতাদের ক্যাশে এবং এটি পুনরায় ব্যবহার করতে পছন্দ করি।
ভ্লাদ

1

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

    spinner.setSelection(0, false);
    new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                spinner.setOnItemSelectedListener(listener);
            }, 500);

1

অভির উত্তরের ভিত্তিতে আমি এই সাধারণ শ্রোতা তৈরি করেছি

class SpinnerListener constructor(private val onItemSelected: (position: Int) -> Unit) : AdapterView.OnItemSelectedListener {

    private var selectionCount = 0

    override fun onNothingSelected(parent: AdapterView<*>?) {
        //no op
    }

    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
        if (selectionCount++ > 1) {
           onItemSelected(position)
        }
    }
}

0

একই সমস্যা ছিল এবং এটি আমার পক্ষে কাজ করে:

আমার কাছে 2 জন স্পিনার রয়েছে এবং আমি এগুলিকে init এবং অন্যান্য নিয়ন্ত্রণের সাথে ইন্টারঅ্যাকশন চলাকালীন বা সার্ভার থেকে ডেটা পাওয়ার পরে আপডেট করি।

এখানে আমার টেম্পলেট:

public class MyClass extends <Activity/Fragment/Whatever> implements Spinner.OnItemSelectedListener {

    private void removeSpinnersListeners() {
        spn1.setOnItemSelectedListener(null);
        spn2.setOnItemSelectedListener(null);
    }

    private void setSpinnersListeners() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                spn1.setOnItemSelectedListener(MyClass.this);
                spn2.setOnItemSelectedListener(MyClass.this);
            }
        }, 1);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // Your code here
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}

যখন ক্লাসটি সরাসরি শ্রোতাদের সেট করার পরিবর্তে সেটস্পিনারলিস্টেনার () ব্যবহার শুরু করে।

রান্নেবল স্পিনারকে তাদের মান নির্ধারণের ঠিক পরে আইটেমসলেক্ট করা থেকে স্পিনারকে আটকাতে বাধা দেবে।

আপনি স্পিনার (একটি সার্ভার কল পর ইত্যাদি) ব্যবহার আপডেট করা দরকার তাহলে removeSpinnersListeners () অধিকার আপনার আপডেটের লাইন সামনে ও ) setSpinnersListeners ( ডান আপডেট লাইন পরে। এটি আপডেটের পরে ফায়ার করা থেকে আইটেমসিলচারিতকে আটকাবে।


0

কোড

spinner.setOnTouchListener(new View.OnTouchListener() { 
@Override public boolean onTouch(View view, MotionEvent motionEvent) { isSpinnerTouch=true; return false; }});

holder.spinner_from.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int slot_position, long l) {
                if(isSpinnerTouch)
                {
                    Log.d("spinner_from", "spinner_from");
                    spinnerItemClickListener.onSpinnerItemClickListener(position, slot_position, AppConstant.FROM_SLOT_ONCLICK_CODE);
                }
                else {

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

0

আমার জন্য, অভি এর সমাধান অপি স্তর 27 পর্যন্ত দুর্দান্ত কাজ করে।

তবে মনে হয় এপি স্তর থেকে ২৮ এবং তারপরের দিকে, শ্রোতা সেট হয়ে গেলে আইটেমসিলিগ্রেটেড () কল করা হয় না, যার অর্থ অন আইটেমলেক্টেড () বলা হয় না।

অতএব, আমি এপিআই স্তরটি যাচাই করতে একটি সংক্ষিপ্ত if-বিবৃতি যুক্ত করেছি:

public void onItemSelected(AdapterView<?> parent, View arg1, int pos,long id) {

            if(Build.VERSION.SDK_INT >= 28){ //onItemSelected() doesn't seem to be called when listener is set on Api 28+
                check = 1;
            }

            if(++check > 1) {
                //Do your action here
            }
        }

আমি মনে করি এটি বেশ অদ্ভুত এবং আমি নিশ্চিত নই যে অন্যদেরও এই সমস্যা রয়েছে তবে আমার ক্ষেত্রে এটি ভালভাবে কাজ করেছে।


0

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

আমার কোটলিন কোডটি এরকম কিছু দেখাচ্ছে:

private var mySpinnerHasBeenTapped = false

private fun initializeMySpinner() {

    my_hint_text_view.setOnClickListener {
        mySpinnerHasBeenTapped = true //turn flag to true
        my_spinner.performClick() //call spinner click
    }

    //Basic spinner setup stuff
    val myList = listOf("Leonardo", "Michelangelo", "Rafael", "Donatello")
    val dataAdapter: ArrayAdapter<String> = ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, myList)
    my_spinner.adapter = dataAdapter

    my_spinner.onItemSelectedListener = object : OnItemSelectedListener {

        override fun onItemSelected(parent: AdapterView<*>?, view: View, position: Int, id: Long) {

            if (mySpinnerHasBeenTapped) { //code below will only run after the user has clicked
                my_hint_text_view.visibility = View.GONE //once an item has been selected, hide the textView
                //Perform action here
            }
        }

        override fun onNothingSelected(parent: AdapterView<*>?) {
            //Do nothing
        }
    }
}

লেআউট ফাইলটির মতো দেখতে কিছুটা গুরুত্বপূর্ণ, স্পিনার এবং টেক্সটভিউ একই প্রস্থ, উচ্চতা এবং মার্জিনগুলি ভাগ করে দেওয়ার গুরুত্বপূর্ণ অংশটি সহ:

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Spinner
                android:id="@+id/my_spinner"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:layout_marginStart="10dp"
                android:layout_marginEnd="10dp"
                android:background="@drawable/bg_for_spinners"

                android:paddingStart="8dp"
                android:paddingEnd="30dp"
                android:singleLine="true" />

            <TextView
                android:id="@+id/my_hint_text_view"
                android:layout_width="match_parent"
                android:layout_height="35dp"                
                android:layout_marginStart="10dp"
                android:layout_marginEnd="10dp"
                android:background="@drawable/bg_for_spinners"

                android:paddingStart="8dp"
                android:paddingEnd="30dp"
                android:singleLine="true"
                android:gravity="center_vertical"
                android:text="*Select A Turtle"
                android:textColor="@color/green_ooze"
                android:textSize="16sp" />

        </FrameLayout>

আমি নিশ্চিত যে অন্যান্য সমাধানগুলি সেখানে কাজ করবে যেখানে আপনি প্রথম অন আইটেমিসিলেক্ট কলটিকে উপেক্ষা করবেন, তবে এটি সর্বদা কল করা হবে বলে ধরে নেওয়ার ধারণাটি আমি সত্যিই পছন্দ করি না।

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