স্ট্রিং সহ নম্বর পিকার উইজেট ব্যবহার করা


98

পূর্ণসংখ্যার পরিবর্তে স্ট্রিং বেছে নেওয়ার জন্য অ্যান্ড্রয়েড নাম্বার পিকার উইজেট ব্যবহার করার কোনও উপায় আছে কি?

উত্তর:


245
NumberPicker picker = new NumberPicker(this);
picker.setMinValue(0);
picker.setMaxValue(2);
picker.setDisplayedValues( new String[] { "Belgium", "France", "United Kingdom" } );

4
আমার জন্য কীটি ছিল আপনাকে প্রদর্শিত কাজের জন্য এবং মিনিম এবং সর্বাধিক এটি কাজ করার আগে সেট করতে হবে। ধন্যবাদ
বেন ক্লেটন

এটি উপরের নির্বাচিত উত্তরের চেয়ে অনেক ভাল।
লিনহ লিনো

4
তবে আমি যখন পাঠ্যের উপর ক্লিক করি তখন নরম কীবোর্ড পপ আউট হয় এবং আমি পাঠ্যটি সম্পাদনা করতে পারি।
গুলান

14
@ আরুলক্সজেড যদি আপনি ইতিমধ্যে এটি আবিষ্কার না করে থাকেন তবে কেবল পিকরকে সেট করুন। সেটডিজেন্ডেন্টফোকসিবিলিটি (ভিউগ্রুপ। ফোকাস_ব্লোক_ডেসেকেন্ডস); পপ আপ আপ কীবোর্ড প্রতিরোধ।
করিম ভারেলা

এই আমাকে সাহায্য! তবে এটি 0 মান হিসাবে উপস্থিত হয় এবং আমি এটি সরাতে পারি না .. কোনও ধারণা? আমার বাছাইকারীটির ব্যাখ্যা দেওয়ার জন্য 0, বেলজিয়াম, ফ্রান্স, যুক্তরাজ্য
ইউজার 4292106

38
NumberPicker numberPicker = new NumberPicker(this);
String[] arrayString= new String[]{"hakuna","matata","timon","and","pumba"};
numberPicker.setMinValue(0);
numberPicker.setMaxValue(arrayString.length-1);

numberPicker.setFormatter(new NumberPicker.Formatter() {
  @Override
  public String format(int value) {
    // TODO Auto-generated method stub
    return arrayString[value];
  }
});

আশা করি এইটি কাজ করবে!


এটি এখন পর্যন্ত সেরা উত্তর।
samatron

যদি এটি অ্যারে হয়, তবে এর আকার () এবং (() পদ্ধতিগুলি নেই)। আকার () দৈর্ঘ্যের সাথে প্রতিস্থাপন করা উচিত, এবং () অ্যারেস্ট্রিং [মান] এর সাথে প্রতিস্থাপন করা উচিত
রেক্সস্প্লোড

আপনি যদি এর পরিবর্তে ফর্ম্যাটর ব্যবহার করেন setDisplayedValuesতবে নম্বর পিকারটি এর প্রস্থটি যথাযথভাবে পরিমাপ করবে না, সুতরাং আপনার পাঠ্যটি সঠিকভাবে ফিট করতে পারলেও ক্লিপড হতে পারে।
মাত্তে রাইবাকভ

15
String value = String.valueOf(picker.getValue());

আপনি অন্য কিছু বোঝাতে চেয়েছিলেন তবে আপনি কী বোঝাতে চেয়েছেন তা খুব পরিষ্কার নয়।

আপডেট:

আপনি নিজের ফর্ম্যাটর সেট করে এটি জাল করতে পারেন:

CountryFormatter implements Formatter {
    public String toString(int value) {
        switch(value) {
            case 0:
                return "England";
            case 1:
                return "France";
        }
        return "Unknown";
    }
}

picker.setFormatter(new CountryFormatter());

getValue () এখনও কোনও পূর্ববর্তী ফিরিয়ে দেবে, তাই আপনি সম্ভবত তাদের আইডিতে দেশগুলির নাম ম্যাপ করতে চান।

সংযোজন: নম্বর পিকারের প্রয়োগটি রয়েছে:

public void setRange(int start, int end, String[] displayedValues)

উপরের ফর্ম্যাটারের চেয়ে আরও ভাল কাজ করে যা মনে হচ্ছে .. যদিও এটি ডকুমেন্টেশনে উল্লেখ করা হয়নি তাই সম্ভবত জনসাধারণের অংশ নয়


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

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

@ ফঙ্কডমোনক আমি ডক্সে এই setRange()পদ্ধতিটি মোটেই খুঁজে পেলাম না ! কোন ধারণা কেন?
iTurki

কোনও নথিভুক্ত পদ্ধতি পাবলিক এপিআই-র অংশ নয় - এগুলি আনুষ্ঠানিকভাবে গুগল দ্বারা সমর্থিত নয় এবং ভবিষ্যতে এগুলি সম্ভবত পরিবর্তিত হবে - আপনি নিজের ঝুঁকিতে ব্যবহার করেন।
ফানকমোনক

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

8

এই সমাধান চেষ্টা করুন, আপনাকে সাহায্য করতে পারে

    NumberPicker pickers = new NumberPicker(this);
    String[] arrayPicker= new String[]{"abc","def","ghi","jkl","mno"};

    //set min value zero
    pickers.setMinValue(0);
    //set max value from length array string reduced 1
    pickers.setMaxValue(arrayPicker.length - 1);
    //implement array string to number picker
    pickers.setDisplayedValues(arrayPicker);
    //disable soft keyboard
    pickers.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
    //set wrap true or false, try it you will know the difference
    pickers.setWrapSelectorWheel(false);

    //create button to test selected text string
    btnPicker.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //get position (int) from number picker
            int pos = pickers.getValue();
            //get string from number picker and position
            String selecPicker = arrayPicker[pos];  
            //test toast to get selected text string
            Toast.makeText(context, selecPicker , Toast.LENGTH_SHORT).show();

        }
    });

0

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

public class YourClassName extends AppCompatActivity {

NumberPicker picker = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity_layout_file);

    picker = (NumberPicker) findViewById(R.id.pickerId_From_your_Layout_file);

     picker.setMinValue(0);
    picker.setMaxValue(3);
    picker.setDisplayedValues(new String[]{"English", "French","Kiswahili","عربى"});
}
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.